Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
fa417e68
"vscode:/vscode.git/clone" did not exist on "4cce21b125ec4b1b947104d9fca9b38af5b71a96"
Commit
fa417e68
authored
Oct 01, 2020
by
Madhukar Pappireddy
Committed by
TrustedFirmware Code Review
Oct 01, 2020
Browse files
Merge "Measured Boot Driver: Fix MISRA-C 2012 defects" into integration
parents
82f38d5e
74ae4eef
Changes
2
Hide whitespace changes
Inline
Side-by-side
drivers/measured_boot/event_log.c
View file @
fa417e68
...
...
@@ -147,13 +147,14 @@ static int add_event2(const uint8_t *hash, const image_data_t *image_ptr)
((
tpml_digest_values
*
)
ptr
)
->
count
=
HASH_ALG_COUNT
;
/* TCG_PCR_EVENT2.Digests[] */
ptr
=
(
uint8_t
*
)
ptr
+
offsetof
(
tpml_digest_values
,
digests
);
ptr
=
(
uint8_t
*
)((
uintptr_t
)
ptr
+
offsetof
(
tpml_digest_values
,
digests
));
/* TCG_PCR_EVENT2.Digests[].AlgorithmId */
((
tpmt_ha
*
)
ptr
)
->
algorithm_id
=
TPM_ALG_ID
;
/* TCG_PCR_EVENT2.Digests[].Digest[] */
ptr
=
(
uint8_t
*
)
ptr
+
offsetof
(
tpmt_ha
,
digest
);
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
offsetof
(
tpmt_ha
,
digest
)
)
;
/* Check for space in Event Log buffer */
if
(((
uintptr_t
)
ptr
+
TCG_DIGEST_SIZE
)
>
EVENT_LOG_END
)
{
...
...
@@ -170,7 +171,7 @@ static int add_event2(const uint8_t *hash, const image_data_t *image_ptr)
}
/* TCG_PCR_EVENT2.EventSize */
ptr
=
(
uint8_t
*
)
ptr
+
TCG_DIGEST_SIZE
;
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
TCG_DIGEST_SIZE
)
;
((
event2_data_t
*
)
ptr
)
->
event_size
=
name_len
;
/* Copy event data to TCG_PCR_EVENT2.Event */
...
...
@@ -178,7 +179,8 @@ static int add_event2(const uint8_t *hash, const image_data_t *image_ptr)
(
const
void
*
)
image_ptr
->
name
,
name_len
);
/* End of event data */
log_ptr
=
(
uint8_t
*
)
ptr
+
offsetof
(
event2_data_t
,
event
)
+
name_len
;
log_ptr
=
(
uint8_t
*
)((
uintptr_t
)
ptr
+
offsetof
(
event2_data_t
,
event
)
+
name_len
);
return
0
;
}
...
...
@@ -205,19 +207,20 @@ void event_log_init(void)
*/
(
void
)
memcpy
(
ptr
,
(
const
void
*
)
&
id_event_header
,
sizeof
(
id_event_header
));
ptr
=
(
uint8_t
*
)
ptr
+
sizeof
(
id_event_header
);
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
sizeof
(
id_event_header
)
)
;
/* TCG_EfiSpecIdEventAlgorithmSize structure */
((
id_event_algorithm_size_t
*
)
ptr
)
->
algorithm_id
=
TPM_ALG_ID
;
((
id_event_algorithm_size_t
*
)
ptr
)
->
digest_size
=
TCG_DIGEST_SIZE
;
ptr
=
(
uint8_t
*
)
ptr
+
sizeof
(
id_event_algorithm_size_t
);
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
sizeof
(
id_event_algorithm_size_t
)
)
;
/*
* TCG_EfiSpecIDEventStruct.vendorInfoSize
* No vendor data
*/
((
id_event_struct_data_t
*
)
ptr
)
->
vendor_info_size
=
0
;
ptr
=
(
uint8_t
*
)
ptr
+
offsetof
(
id_event_struct_data_t
,
vendor_info
);
ptr
=
(
uint8_t
*
)((
uintptr_t
)
ptr
+
offsetof
(
id_event_struct_data_t
,
vendor_info
));
if
((
uintptr_t
)
ptr
!=
((
uintptr_t
)
event_log
+
ID_EVENT_SIZE
))
{
panic
();
}
...
...
@@ -234,19 +237,20 @@ void event_log_init(void)
/* Copy Startup Locality Event Header */
(
void
)
memcpy
(
ptr
,
(
const
void
*
)
&
locality_event_header
,
sizeof
(
locality_event_header
));
ptr
=
(
uint8_t
*
)
ptr
+
sizeof
(
locality_event_header
);
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
sizeof
(
locality_event_header
)
)
;
/* TCG_PCR_EVENT2.Digests[].AlgorithmId */
((
tpmt_ha
*
)
ptr
)
->
algorithm_id
=
TPM_ALG_ID
;
/* TCG_PCR_EVENT2.Digests[].Digest[] */
(
void
)
memset
(
&
((
tpmt_ha
*
)
ptr
)
->
digest
,
0
,
TPM_ALG_ID
);
ptr
=
(
uint8_t
*
)
ptr
+
offsetof
(
tpmt_ha
,
digest
)
+
TCG_DIGEST_SIZE
;
ptr
=
(
uint8_t
*
)((
uintptr_t
)
ptr
+
offsetof
(
tpmt_ha
,
digest
)
+
TCG_DIGEST_SIZE
);
/* TCG_PCR_EVENT2.EventSize */
((
event2_data_t
*
)
ptr
)
->
event_size
=
(
uint32_t
)
sizeof
(
startup_locality_event_t
);
ptr
=
(
uint8_t
*
)
ptr
+
offsetof
(
event2_data_t
,
event
);
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
offsetof
(
event2_data_t
,
event
)
)
;
/* TCG_EfiStartupLocalityEvent.Signature */
(
void
)
memcpy
(
ptr
,
(
const
void
*
)
locality_signature
,
...
...
@@ -257,7 +261,7 @@ void event_log_init(void)
* the platform's boot firmware
*/
((
startup_locality_event_t
*
)
ptr
)
->
startup_locality
=
0U
;
ptr
=
(
uint8_t
*
)
ptr
+
sizeof
(
startup_locality_event_t
);
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
sizeof
(
startup_locality_event_t
)
)
;
if
((
uintptr_t
)
ptr
!=
((
uintptr_t
)
start_ptr
+
LOC_EVENT_SIZE
))
{
panic
();
}
...
...
drivers/measured_boot/event_print.c
View file @
fa417e68
...
...
@@ -28,7 +28,7 @@ static void id_event_print(uint8_t **log_addr, size_t *log_size)
uint32_t
event_size
,
number_of_algorithms
;
size_t
digest_len
;
#if ENABLE_ASSERTIONS
const
uint8_t
*
end_ptr
=
*
log_addr
+
*
log_size
;
const
uint8_t
*
end_ptr
=
(
uint8_t
*
)((
uintptr_t
)
*
log_addr
+
*
log_size
)
;
bool
valid
=
true
;
#endif
...
...
@@ -90,7 +90,7 @@ static void id_event_print(uint8_t **log_addr, size_t *log_size)
/* Size of DigestSizes[] */
digest_len
=
number_of_algorithms
*
sizeof
(
id_event_algorithm_size_t
);
assert
(((
uint
8_t
*
)
alg_ptr
+
digest_len
)
<=
end_ptr
);
assert
(((
uint
ptr_t
)
alg_ptr
+
digest_len
)
<=
(
uintptr_t
)
end_ptr
);
LOG_EVENT
(
" DigestSizes :
\n
"
);
for
(
i
=
0U
;
i
<
number_of_algorithms
;
++
i
)
{
...
...
@@ -118,14 +118,14 @@ static void id_event_print(uint8_t **log_addr, size_t *log_size)
}
/* Address of VendorInfoSize */
info_size_ptr
=
(
uint8_t
*
)
alg_ptr
+
digest_len
;
assert
(
info_size_ptr
<=
end_ptr
);
info_size_ptr
=
(
uint8_t
*
)
((
uintptr_t
)
alg_ptr
+
digest_len
)
;
assert
(
(
uintptr_t
)
info_size_ptr
<=
(
uintptr_t
)
end_ptr
);
info_size
=
*
info_size_ptr
++
;
LOG_EVENT
(
" VendorInfoSize : %u
\n
"
,
info_size
);
/* Check VendorInfo end address */
assert
((
info_size_ptr
+
info_size
)
<=
end_ptr
);
assert
((
(
uintptr_t
)
info_size_ptr
+
info_size
)
<=
(
uintptr_t
)
end_ptr
);
/* Check EventSize */
assert
(
event_size
==
(
sizeof
(
id_event_struct_t
)
+
...
...
@@ -154,7 +154,7 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
size_t
sha_size
,
digests_size
=
0U
;
void
*
ptr
=
*
log_addr
;
#if ENABLE_ASSERTIONS
const
uint8_t
*
end_ptr
=
*
log_addr
+
*
log_size
;
const
uint8_t
*
end_ptr
=
(
uint8_t
*
)((
uintptr_t
)
*
log_addr
+
*
log_size
)
;
#endif
assert
(
*
log_size
>=
sizeof
(
event2_header_t
));
...
...
@@ -174,7 +174,8 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
for
(
unsigned
int
i
=
0U
;
i
<
count
;
++
i
)
{
/* Check AlgorithmId address */
assert
(((
uint8_t
*
)
ptr
+
offsetof
(
tpmt_ha
,
digest
))
<=
end_ptr
);
assert
(((
uintptr_t
)
ptr
+
offsetof
(
tpmt_ha
,
digest
))
<=
(
uintptr_t
)
end_ptr
);
LOG_EVENT
(
" #%u AlgorithmId : SHA"
,
i
);
switch
(((
tpmt_ha
*
)
ptr
)
->
algorithm_id
)
{
...
...
@@ -198,8 +199,8 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
}
/* End of Digest[] */
ptr
=
(
uint8_t
*
)
ptr
+
offsetof
(
tpmt_ha
,
digest
);
assert
(((
uint
8_t
*
)
ptr
+
sha_size
)
<=
end_ptr
);
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
offsetof
(
tpmt_ha
,
digest
)
)
;
assert
(((
uint
ptr_t
)
ptr
+
sha_size
)
<=
(
uintptr_t
)
end_ptr
);
/* Total size of all digests */
digests_size
+=
sha_size
;
...
...
@@ -217,16 +218,16 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
}
/* TCG_PCR_EVENT2.EventSize */
assert
(((
uint
8_t
*
)
ptr
+
offsetof
(
event2_data_t
,
event
))
<=
end_ptr
);
assert
(((
uint
ptr_t
)
ptr
+
offsetof
(
event2_data_t
,
event
))
<=
(
uintptr_t
)
end_ptr
);
event_size
=
((
event2_data_t
*
)
ptr
)
->
event_size
;
LOG_EVENT
(
" EventSize : %u
\n
"
,
event_size
);
/* Address of TCG_PCR_EVENT2.Event[EventSize] */
ptr
=
(
uint8_t
*
)
ptr
+
offsetof
(
event2_data_t
,
event
);
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
offsetof
(
event2_data_t
,
event
)
)
;
/* End of TCG_PCR_EVENT2.Event[EventSize] */
assert
(((
uint
8_t
*
)
ptr
+
event_size
)
<=
end_ptr
);
assert
(((
uint
ptr_t
)
ptr
+
event_size
)
<=
(
uintptr_t
)
end_ptr
);
if
((
event_size
==
sizeof
(
startup_locality_event_t
))
&&
(
strcmp
((
const
char
*
)
ptr
,
TCG_STARTUP_LOCALITY_SIGNATURE
)
==
0
))
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment