Anastasia Klimchuk has submitted this change. ( https://review.coreboot.org/c/flashrom/+/62764 )
Change subject: ich_descriptors.c: Ensure unsigned types >=0 on to prevent underflow ......................................................................
ich_descriptors.c: Ensure unsigned types >=0 on to prevent underflow
Unsigned types show undefined behaviour if they are subtracted by a value greater than their own (mostly it wraps to the max value). Using this value for left shifting could be even more dangerous.
Change-Id: I5921cc571f3dca5188ca1973dba6ececbcbe2f39 Signed-off-by: Aarya Chaumal aarya.chaumal@gmail.com Reviewed-on: https://review.coreboot.org/c/flashrom/+/62764 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Anastasia Klimchuk aklm@chromium.org --- M ich_descriptors.c 1 file changed, 5 insertions(+), 4 deletions(-)
Approvals: build bot (Jenkins): Verified Anastasia Klimchuk: Looks good to me, approved
diff --git a/ich_descriptors.c b/ich_descriptors.c index 7c03499..4d85e08 100644 --- a/ich_descriptors.c +++ b/ich_descriptors.c @@ -502,16 +502,17 @@ msg_pdbg2(" RegA RegB RegC RegD RegE RegF\n"); } for (i = 0; i < nm; i++) { + const unsigned int ext_region_start = 12; size_t j; msg_pdbg2("%-4s", master_names[i]); - for (j = 0; j < (size_t)min(num_regions, 12); j++) + for (j = 0; j < (size_t)min(num_regions, ext_region_start); j++) msg_pdbg2(" %c%c ", desc->master.mstr[i].read & (1 << j) ? 'r' : ' ', desc->master.mstr[i].write & (1 << j) ? 'w' : ' '); - for (; j < num_regions; j++) + for (j = ext_region_start; j < num_regions; j++) msg_pdbg2(" %c%c ", - desc->master.mstr[i].ext_read & (1 << (j - 12)) ? 'r' : ' ', - desc->master.mstr[i].ext_write & (1 << (j - 12)) ? 'w' : ' '); + desc->master.mstr[i].ext_read & (1 << (j - ext_region_start)) ? 'r' : ' ', + desc->master.mstr[i].ext_write & (1 << (j - ext_region_start)) ? 'w' : ' '); msg_pdbg2("\n"); } } else if (cs == CHIPSET_C620_SERIES_LEWISBURG) {