util/mb/google/hatch: update CRC calculation for correctness
The CRC result is treated as a signed value, and so in certain situations, the calculated value for the last four digits will not be correct. Ensure that the CRC is treated as an unsigned 32-bit value prior to converting the last 4 decimal digits to a string. Signed-off-by: Paul Fagerburg <pfagerburg@chromium.org> Change-Id: I92f9ce1ceb7450f90b89c94e0ace6f79a9419b42 Reviewed-on: https://review.coreboot.org/c/coreboot/+/35604 Reviewed-by: Andrew McRae <amcrae@chromium.org> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
39f3f52b3e
commit
4ab023329d
|
@ -64,8 +64,11 @@ def get_gbb_hwid(variant_name):
|
||||||
converted to all uppercase as part of this function."""
|
converted to all uppercase as part of this function."""
|
||||||
hwid = variant_name + ' test'
|
hwid = variant_name + ' test'
|
||||||
upperhwid = hwid.upper()
|
upperhwid = hwid.upper()
|
||||||
suffix = zlib.crc32(upperhwid.encode('UTF-8')) % 10000
|
# Force conversion to unsigned by bitwise AND with (2^32)-1.
|
||||||
gbb_hwid = upperhwid + ' ' + str(suffix).zfill(4)
|
# See the docs for crc32 at https://docs.python.org/3/library/zlib.html
|
||||||
|
# for why '& 0xffffffff' is necessary.
|
||||||
|
crc = zlib.crc32(upperhwid.encode('UTF-8')) & 0xffffffff
|
||||||
|
gbb_hwid = upperhwid + ' ' + str(crc % 10000).zfill(4)
|
||||||
return gbb_hwid
|
return gbb_hwid
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue