Blame 0011-dmidecode-Hide-irrelevant-fixup-message.patch

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