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
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
Show 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)
...
@@ -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
;
((
tpml_digest_values
*
)
ptr
)
->
count
=
HASH_ALG_COUNT
;
/* TCG_PCR_EVENT2.Digests[] */
/* 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 */
/* TCG_PCR_EVENT2.Digests[].AlgorithmId */
((
tpmt_ha
*
)
ptr
)
->
algorithm_id
=
TPM_ALG_ID
;
((
tpmt_ha
*
)
ptr
)
->
algorithm_id
=
TPM_ALG_ID
;
/* TCG_PCR_EVENT2.Digests[].Digest[] */
/* 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 */
/* Check for space in Event Log buffer */
if
(((
uintptr_t
)
ptr
+
TCG_DIGEST_SIZE
)
>
EVENT_LOG_END
)
{
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)
...
@@ -170,7 +171,7 @@ static int add_event2(const uint8_t *hash, const image_data_t *image_ptr)
}
}
/* TCG_PCR_EVENT2.EventSize */
/* 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
;
((
event2_data_t
*
)
ptr
)
->
event_size
=
name_len
;
/* Copy event data to TCG_PCR_EVENT2.Event */
/* 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)
...
@@ -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
);
(
const
void
*
)
image_ptr
->
name
,
name_len
);
/* End of event data */
/* 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
;
return
0
;
}
}
...
@@ -205,19 +207,20 @@ void event_log_init(void)
...
@@ -205,19 +207,20 @@ void event_log_init(void)
*/
*/
(
void
)
memcpy
(
ptr
,
(
const
void
*
)
&
id_event_header
,
(
void
)
memcpy
(
ptr
,
(
const
void
*
)
&
id_event_header
,
sizeof
(
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 */
/* TCG_EfiSpecIdEventAlgorithmSize structure */
((
id_event_algorithm_size_t
*
)
ptr
)
->
algorithm_id
=
TPM_ALG_ID
;
((
id_event_algorithm_size_t
*
)
ptr
)
->
algorithm_id
=
TPM_ALG_ID
;
((
id_event_algorithm_size_t
*
)
ptr
)
->
digest_size
=
TCG_DIGEST_SIZE
;
((
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
* TCG_EfiSpecIDEventStruct.vendorInfoSize
* No vendor data
* No vendor data
*/
*/
((
id_event_struct_data_t
*
)
ptr
)
->
vendor_info_size
=
0
;
((
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
))
{
if
((
uintptr_t
)
ptr
!=
((
uintptr_t
)
event_log
+
ID_EVENT_SIZE
))
{
panic
();
panic
();
}
}
...
@@ -234,19 +237,20 @@ void event_log_init(void)
...
@@ -234,19 +237,20 @@ void event_log_init(void)
/* Copy Startup Locality Event Header */
/* Copy Startup Locality Event Header */
(
void
)
memcpy
(
ptr
,
(
const
void
*
)
&
locality_event_header
,
(
void
)
memcpy
(
ptr
,
(
const
void
*
)
&
locality_event_header
,
sizeof
(
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 */
/* TCG_PCR_EVENT2.Digests[].AlgorithmId */
((
tpmt_ha
*
)
ptr
)
->
algorithm_id
=
TPM_ALG_ID
;
((
tpmt_ha
*
)
ptr
)
->
algorithm_id
=
TPM_ALG_ID
;
/* TCG_PCR_EVENT2.Digests[].Digest[] */
/* TCG_PCR_EVENT2.Digests[].Digest[] */
(
void
)
memset
(
&
((
tpmt_ha
*
)
ptr
)
->
digest
,
0
,
TPM_ALG_ID
);
(
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 */
/* TCG_PCR_EVENT2.EventSize */
((
event2_data_t
*
)
ptr
)
->
event_size
=
((
event2_data_t
*
)
ptr
)
->
event_size
=
(
uint32_t
)
sizeof
(
startup_locality_event_t
);
(
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 */
/* TCG_EfiStartupLocalityEvent.Signature */
(
void
)
memcpy
(
ptr
,
(
const
void
*
)
locality_signature
,
(
void
)
memcpy
(
ptr
,
(
const
void
*
)
locality_signature
,
...
@@ -257,7 +261,7 @@ void event_log_init(void)
...
@@ -257,7 +261,7 @@ void event_log_init(void)
* the platform's boot firmware
* the platform's boot firmware
*/
*/
((
startup_locality_event_t
*
)
ptr
)
->
startup_locality
=
0U
;
((
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
))
{
if
((
uintptr_t
)
ptr
!=
((
uintptr_t
)
start_ptr
+
LOC_EVENT_SIZE
))
{
panic
();
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)
...
@@ -28,7 +28,7 @@ static void id_event_print(uint8_t **log_addr, size_t *log_size)
uint32_t
event_size
,
number_of_algorithms
;
uint32_t
event_size
,
number_of_algorithms
;
size_t
digest_len
;
size_t
digest_len
;
#if ENABLE_ASSERTIONS
#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
;
bool
valid
=
true
;
#endif
#endif
...
@@ -90,7 +90,7 @@ static void id_event_print(uint8_t **log_addr, size_t *log_size)
...
@@ -90,7 +90,7 @@ static void id_event_print(uint8_t **log_addr, size_t *log_size)
/* Size of DigestSizes[] */
/* Size of DigestSizes[] */
digest_len
=
number_of_algorithms
*
sizeof
(
id_event_algorithm_size_t
);
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
"
);
LOG_EVENT
(
" DigestSizes :
\n
"
);
for
(
i
=
0U
;
i
<
number_of_algorithms
;
++
i
)
{
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)
...
@@ -118,14 +118,14 @@ static void id_event_print(uint8_t **log_addr, size_t *log_size)
}
}
/* Address of VendorInfoSize */
/* Address of VendorInfoSize */
info_size_ptr
=
(
uint8_t
*
)
alg_ptr
+
digest_len
;
info_size_ptr
=
(
uint8_t
*
)
((
uintptr_t
)
alg_ptr
+
digest_len
)
;
assert
(
info_size_ptr
<=
end_ptr
);
assert
(
(
uintptr_t
)
info_size_ptr
<=
(
uintptr_t
)
end_ptr
);
info_size
=
*
info_size_ptr
++
;
info_size
=
*
info_size_ptr
++
;
LOG_EVENT
(
" VendorInfoSize : %u
\n
"
,
info_size
);
LOG_EVENT
(
" VendorInfoSize : %u
\n
"
,
info_size
);
/* Check VendorInfo end address */
/* 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 */
/* Check EventSize */
assert
(
event_size
==
(
sizeof
(
id_event_struct_t
)
+
assert
(
event_size
==
(
sizeof
(
id_event_struct_t
)
+
...
@@ -154,7 +154,7 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
...
@@ -154,7 +154,7 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
size_t
sha_size
,
digests_size
=
0U
;
size_t
sha_size
,
digests_size
=
0U
;
void
*
ptr
=
*
log_addr
;
void
*
ptr
=
*
log_addr
;
#if ENABLE_ASSERTIONS
#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
#endif
assert
(
*
log_size
>=
sizeof
(
event2_header_t
));
assert
(
*
log_size
>=
sizeof
(
event2_header_t
));
...
@@ -174,7 +174,8 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
...
@@ -174,7 +174,8 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
for
(
unsigned
int
i
=
0U
;
i
<
count
;
++
i
)
{
for
(
unsigned
int
i
=
0U
;
i
<
count
;
++
i
)
{
/* Check AlgorithmId address */
/* 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
);
LOG_EVENT
(
" #%u AlgorithmId : SHA"
,
i
);
switch
(((
tpmt_ha
*
)
ptr
)
->
algorithm_id
)
{
switch
(((
tpmt_ha
*
)
ptr
)
->
algorithm_id
)
{
...
@@ -198,8 +199,8 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
...
@@ -198,8 +199,8 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
}
}
/* End of Digest[] */
/* End of Digest[] */
ptr
=
(
uint8_t
*
)
ptr
+
offsetof
(
tpmt_ha
,
digest
);
ptr
=
(
uint8_t
*
)
((
uintptr_t
)
ptr
+
offsetof
(
tpmt_ha
,
digest
)
)
;
assert
(((
uint
8_t
*
)
ptr
+
sha_size
)
<=
end_ptr
);
assert
(((
uint
ptr_t
)
ptr
+
sha_size
)
<=
(
uintptr_t
)
end_ptr
);
/* Total size of all digests */
/* Total size of all digests */
digests_size
+=
sha_size
;
digests_size
+=
sha_size
;
...
@@ -217,16 +218,16 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
...
@@ -217,16 +218,16 @@ static void event2_print(uint8_t **log_addr, size_t *log_size)
}
}
/* TCG_PCR_EVENT2.EventSize */
/* 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
;
event_size
=
((
event2_data_t
*
)
ptr
)
->
event_size
;
LOG_EVENT
(
" EventSize : %u
\n
"
,
event_size
);
LOG_EVENT
(
" EventSize : %u
\n
"
,
event_size
);
/* Address of TCG_PCR_EVENT2.Event[EventSize] */
/* 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] */
/* 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
))
&&
if
((
event_size
==
sizeof
(
startup_locality_event_t
))
&&
(
strcmp
((
const
char
*
)
ptr
,
TCG_STARTUP_LOCALITY_SIGNATURE
)
==
0
))
{
(
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