nvramtool: write size field more obviously
The field wasn't initialized in RAM first and later overwritten in a somewhat twisted way (that relied on the size field coming after the tag field in the struct). Change-Id: Ibe931b297df51e3c46ae163e059338781f5a27e2 Found-by: Coverity Scan Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/4087 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
ef4020957e
commit
c37b05c413
|
@ -112,6 +112,7 @@ int write_cmos_layout_bin(FILE *f)
|
||||||
sum += sizeof(table);
|
sum += sizeof(table);
|
||||||
table.header_length = sizeof(table);
|
table.header_length = sizeof(table);
|
||||||
table.tag = LB_TAG_CMOS_OPTION_TABLE;
|
table.tag = LB_TAG_CMOS_OPTION_TABLE;
|
||||||
|
table.size = 0;
|
||||||
|
|
||||||
if (fwrite((char *)&table, sizeof(table), 1, f) != 1) {
|
if (fwrite((char *)&table, sizeof(table), 1, f) != 1) {
|
||||||
perror("Error writing image file");
|
perror("Error writing image file");
|
||||||
|
@ -187,12 +188,13 @@ int write_cmos_layout_bin(FILE *f)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fseek(f, sizeof(table.tag), SEEK_SET) != 0) {
|
if (fseek(f, 0, SEEK_SET) != 0) {
|
||||||
perror("Error while seeking");
|
perror("Error while seeking");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fwrite((char *)&sum, sizeof(table.tag), 1, f) != 1) {
|
table.size = sum;
|
||||||
|
if (fwrite((char *)&table, sizeof(table), 1, f) != 1) {
|
||||||
perror("Error writing image file");
|
perror("Error writing image file");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue