summaryrefslogtreecommitdiffstats
path: root/ich_descriptors.c
diff options
context:
space:
mode:
authoraarya <aarya.chaumal@gmail.com>2022-03-13 15:35:12 +0530
committerAnastasia Klimchuk <aklm@chromium.org>2022-04-11 02:13:13 +0000
commit7273274e00b3e715cfe279f8eb935207388a3ee0 (patch)
tree8eab9072760e60b0161cf90e15c33ef3822a1a15 /ich_descriptors.c
parent950037a7243e3fd8e75d4f956e0a4a57717a1cff (diff)
downloadflashrom-7273274e00b3e715cfe279f8eb935207388a3ee0.tar.gz
flashrom-7273274e00b3e715cfe279f8eb935207388a3ee0.tar.bz2
flashrom-7273274e00b3e715cfe279f8eb935207388a3ee0.zip
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>
Diffstat (limited to 'ich_descriptors.c')
-rw-r--r--ich_descriptors.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/ich_descriptors.c b/ich_descriptors.c
index 7c03499d3..4d85e0821 100644
--- a/ich_descriptors.c
+++ b/ich_descriptors.c
@@ -502,16 +502,17 @@ void prettyprint_ich_descriptor_master(const enum ich_chipset cs, const struct i
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) {