Anton Arapov 75ce9be
From cff11afa886a0147d734b650755d232b5e7f2099 Mon Sep 17 00:00:00 2001
Anton Arapov 75ce9be
From: Jean Delvare <jdelvare@suse.de>
Anton Arapov 75ce9be
Date: Tue, 3 May 2016 15:32:21 +0200
Anton Arapov 75ce9be
Subject: [PATCH 11/11] dmidecode: Hide irrelevant fixup message
Anton Arapov 75ce9be
Anton Arapov 75ce9be
Only display the message about type 34 length fixup if the entry in
Anton Arapov 75ce9be
question is going to be displayed. Otherwise it's only confusing.
Anton Arapov 75ce9be
Anton Arapov 75ce9be
This fixes bug #109024:
Anton Arapov 75ce9be
http://savannah.nongnu.org/support/?109024
Anton Arapov 75ce9be
Anton Arapov 75ce9be
Fixes: 3f70b3515d91 ("dmidecode: Fix up invalid DMI type 34 structure length")
Anton Arapov 75ce9be
---
Anton Arapov 75ce9be
 dmidecode.c | 8 +++++---
Anton Arapov 75ce9be
 1 file changed, 5 insertions(+), 3 deletions(-)
Anton Arapov 75ce9be
Anton Arapov 75ce9be
diff --git a/dmidecode.c b/dmidecode.c
Anton Arapov 75ce9be
index 0c26685..84c18e1 100644
Anton Arapov 75ce9be
--- a/dmidecode.c
Anton Arapov 75ce9be
+++ b/dmidecode.c
Anton Arapov 75ce9be
@@ -2949,7 +2949,7 @@ static void dmi_64bit_memory_error_address(u64 code)
Anton Arapov 75ce9be
  * first 5 characters of the device name to be trimmed. It's easy to
Anton Arapov 75ce9be
  * check and fix, so do it, but warn.
Anton Arapov 75ce9be
  */
Anton Arapov 75ce9be
-static void dmi_fixup_type_34(struct dmi_header *h)
Anton Arapov 75ce9be
+static void dmi_fixup_type_34(struct dmi_header *h, int display)
Anton Arapov 75ce9be
 {
Anton Arapov 75ce9be
 	u8 *p = h->data;
Anton Arapov 75ce9be
 
Anton Arapov 75ce9be
@@ -2957,7 +2957,9 @@ static void dmi_fixup_type_34(struct dmi_header *h)
Anton Arapov 75ce9be
 	if (h->length == 0x10
Anton Arapov 75ce9be
 	 && is_printable(p + 0x0B, 0x10 - 0x0B))
Anton Arapov 75ce9be
 	{
Anton Arapov 75ce9be
-		printf("Invalid entry length (%u). Fixed up to %u.\n", 0x10, 0x0B);
Anton Arapov 75ce9be
+		if (!(opt.flags & FLAG_QUIET) && display)
Anton Arapov 75ce9be
+			printf("Invalid entry length (%u). Fixed up to %u.\n",
Anton Arapov 75ce9be
+				0x10, 0x0B);
Anton Arapov 75ce9be
 		h->length = 0x0B;
Anton Arapov 75ce9be
 	}
Anton Arapov 75ce9be
 }
Anton Arapov 75ce9be
@@ -4446,7 +4448,7 @@ static void dmi_table_decode(u8 *buf, u32 len, u16 num, u16 ver, u32 flags)
Anton Arapov 75ce9be
 
Anton Arapov 75ce9be
 		/* Fixup a common mistake */
Anton Arapov 75ce9be
 		if (h.type == 34)
Anton Arapov 75ce9be
-			dmi_fixup_type_34(&h);
Anton Arapov 75ce9be
+			dmi_fixup_type_34(&h, display);
Anton Arapov 75ce9be
 
Anton Arapov 75ce9be
 		/* look for the next handle */
Anton Arapov 75ce9be
 		next = data + h.length;
Anton Arapov 75ce9be
-- 
Anton Arapov 75ce9be
2.7.4
Anton Arapov 75ce9be