Blob Blame History Raw
From 22728f16eb611411258146045030292e1170bfef Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 14 Feb 2018 16:15:28 -0500
Subject: [PATCH] libsmbios: fix more places with loop iterators with bad types

In these cases we get:

../src/libsmbios_c/smbios/smbios_obj.c: In function 'smbios_verify_smbios':
../src/libsmbios_c/smbios/smbios_obj.c:415:31: error: comparison of integer expressions of different signedness: 'unsigned int' and 'long int' [-Werror=sign-compare]
     for(unsigned int i = 0; i < length ; ++i )
                               ^
../src/libsmbios_c/smbios/smbios_obj.c: In function 'smbios_verify_smbios3':
../src/libsmbios_c/smbios/smbios_obj.c:436:31: error: comparison of integer expressions of different signedness: 'unsigned int' and 'long int' [-Werror=sign-compare]
     for(unsigned int i = 0; i < length ; ++i )
                               ^

I really don't understand why gcc will complain about it being signed vs
unsigned, but not about the fact that the int can obviously overflow
before the condition being checked against length, a larger type, is
satisfied.

Signed-off-by: Peter Jones <pjones@redhat.com>
---
 src/libsmbios_c/smbios/smbios_obj.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/libsmbios_c/smbios/smbios_obj.c b/src/libsmbios_c/smbios/smbios_obj.c
index a6f2e1e3525..c932ba59535 100644
--- a/src/libsmbios_c/smbios/smbios_obj.c
+++ b/src/libsmbios_c/smbios/smbios_obj.c
@@ -412,7 +412,7 @@ bool __hidden smbios_verify_smbios(const char *buf, long length, long *dmi_lengt
     bool retval = true;
 
     u8 checksum = 0;
-    for(unsigned int i = 0; i < length ; ++i )
+    for(long i = 0; i < length ; ++i )
         checksum = (checksum + buf[i]) & 0xFF;
 
     fnprintf("SMBIOS TEP csum %d.\n", (int)checksum);
@@ -433,7 +433,7 @@ bool __hidden smbios_verify_smbios3(const char *buf, long length, long *dmi_leng
 {
     struct smbios_table_entry_point_64 *ep;
     u8 checksum = 0;
-    for(unsigned int i = 0; i < length ; ++i )
+    for(long i = 0; i < length ; ++i )
         checksum = (checksum + buf[i]) & 0xFF;
 
     fnprintf("SMBIOS TEP csum %d.\n", (int)checksum);
-- 
2.14.3