[flashrom] cbtable.c: Do not unnecessarily duplicate strings

Paul Menzel paulepanter at users.sourceforge.net
Sat Oct 25 14:31:27 CEST 2014


From: Paul Menzel <paulepanter at users.sourceforge.net>
Date: Tue, 21 Oct 2014 23:46:18 +0200

Commit 1577 (Refactor the -p internal:mainboard handling.) got rid of
the global variables `image_vendor` and `image_model`. Therefore
duplicating strings to store it is not needed anymore.

Found-by: Valgrind 3.10.0

	==25829== Command: /src/flashrom/flashrom -p internal -c W25Q32.V -w build/coreboot.rom
	[…]
	==25829== 7 bytes in 1 blocks are definitely lost in loss record 3 of 4
	==25829==    at 0x40291CC: malloc (vg_replace_malloc.c:296)
	==25829==    by 0x40FD517: strdup (strdup.c:42)
	==25829==    by 0x8055869: cb_check_image (cbtable.c:86)
	==25829==    by 0x806466B: doit (flashrom.c:1972)
	==25829==    by 0x804A111: main (cli_classic.c:545)
	==25829==
	==25829== 7 bytes in 1 blocks are definitely lost in loss record 4 of 4
	==25829==    at 0x40291CC: malloc (vg_replace_malloc.c:296)
	==25829==    by 0x40FD517: strdup (strdup.c:42)
	==25829==    by 0x8055873: cb_check_image (cbtable.c:87)
	==25829==    by 0x806466B: doit (flashrom.c:1972)
	==25829==    by 0x804A111: main (cli_classic.c:545)

Signed-off-by: Paul Menzel <paulepanter at users.sourceforge.net>
---
 cbtable.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/cbtable.c b/cbtable.c
index c100bbb..1a74e46 100644
--- a/cbtable.c
+++ b/cbtable.c
@@ -40,8 +40,6 @@ static char *cb_vendor = NULL, *cb_model = NULL;
  */
 int cb_check_image(uint8_t *image, int size)
 {
-	const char *image_vendor = NULL;
-	const char *image_model = NULL;
 	unsigned int *walk;
 	unsigned int mb_part_offset, mb_vendor_offset;
 	char *mb_part, *mb_vendor;
@@ -83,22 +81,20 @@ int cb_check_image(uint8_t *image, int size)
 
 	msg_pdbg("coreboot last image size (not ROM size) is %d bytes.\n", *walk);
 
-	image_vendor = strdup(mb_vendor);
-	image_model = strdup(mb_part);
-	msg_pdbg("Manufacturer: %s\n", image_vendor);
-	msg_pdbg("Mainboard ID: %s\n", image_model);
+	msg_pdbg("Manufacturer: %s\n", mb_vendor);
+	msg_pdbg("Mainboard ID: %s\n", mb_part);
 
 	/* If these are not set, the coreboot table was not found. */
 	if (!cb_vendor || !cb_model)
 		return 0;
 
 	/* These comparisons are case insensitive to make things a little less user^Werror prone. */
-	if (!strcasecmp(image_vendor, cb_vendor) && !strcasecmp(image_model, cb_model)) {
+	if (!strcasecmp(mb_vendor, cb_vendor) && !strcasecmp(mb_part, cb_model)) {
 		msg_pdbg2("This coreboot image matches this mainboard.\n");
 	} else {
 		msg_perr("This coreboot image (%s:%s) does not appear to\n"
 			 "be correct for the detected mainboard (%s:%s).\n",
-			 image_vendor, image_model, cb_vendor, cb_model);
+			 mb_vendor, mb_part, cb_vendor, cb_model);
 		return -1;
 	}
 
-- 
2.1.1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <http://www.flashrom.org/pipermail/flashrom/attachments/20141025/de6ef126/attachment.asc>


More information about the flashrom mailing list