Skip to content

Commit 4da7fb1

Browse files
sasdfcfrantz
authored andcommitted
[ownership] Fix key algo comparison hardening
We used XOR for the comparison hardening, but didn't realize that might flip false to true. Luckily, the allowed values checked before calling the function makes the flip impossible. This commit changes to normal comparison to eliminating the corner case. Change-Id: I7e4c7cdfd3d53a70852ecf97939fdce56a7b0cd8 Signed-off-by: Yi-Hsuan Deng <[email protected]>
1 parent 36e8bf1 commit 4da7fb1

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

sw/device/silicon_creator/lib/ownership/owner_block.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ enum {
4444
};
4545

4646
hardened_bool_t owner_block_owner_key_equal(void) {
47-
hardened_bool_t result =
48-
hardened_memeq(owner_page[0].owner_key.raw, owner_page[1].owner_key.raw,
49-
ARRAYSIZE(owner_page[0].owner_key.raw));
50-
result ^= owner_page[0].ownership_key_alg;
51-
result ^= owner_page[1].ownership_key_alg;
52-
if (launder32(result) != kHardenedBoolTrue) {
47+
if (launder32(owner_page[0].ownership_key_alg) !=
48+
launder32(owner_page[1].ownership_key_alg)) {
5349
return kHardenedBoolFalse;
5450
}
55-
return result;
51+
HARDENED_CHECK_EQ(owner_page[0].ownership_key_alg,
52+
owner_page[1].ownership_key_alg);
53+
return hardened_memeq(owner_page[0].owner_key.raw,
54+
owner_page[1].owner_key.raw,
55+
ARRAYSIZE(owner_page[0].owner_key.raw));
5656
}
5757

5858
hardened_bool_t owner_block_newversion_mode(void) {

0 commit comments

Comments
 (0)