icoutils/0007-common-intutil.c-Avoid-comparison-between-signed-and.patch
Richard W.M. Jones 86a1ed311e Add a series of upstream patches to enable compiler warnings and
fix multiple issues.

Revert one of the checks which breaks processing of PE binaries.

Removed the 'Group' line, not needed with modern Fedora/RPM.
2017-03-10 12:18:04 +00:00

81 lines
2.7 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From a62bcad4953223057c37a00d3bcdb051f2283578 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 9 Mar 2017 13:07:11 +0000
Subject: [PATCH 07/26] common/intutil.c: Avoid comparison between signed and
unsigned.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
By using an unsigned char to hold the character we can avoid needing
to check for c < 0 and also avoid the comparison between signed and
unsigned integers.
In GCC the warning/error was:
intutil.c: In function parse_uint32:
intutil.c:249:63: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
if (value > UINT32_MAX/10L || (value == UINT32_MAX/10L && c > UINT32_MAX%10))
^
intutil.c: In function parse_uint64:
intutil.c:267:65: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
if (value > UINT64_MAX/10LL || (value == UINT64_MAX/10LL && c > UINT64_MAX%10LL))
^
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
---
common/intutil.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/common/intutil.c b/common/intutil.c
index 57f8cb1..d500ba7 100644
--- a/common/intutil.c
+++ b/common/intutil.c
@@ -207,8 +207,8 @@ parse_uint8(const char *instr, uint8_t *outint)
uint8_t value = 0;
for (; *instr != '\0'; instr++) {
- int8_t c = *instr - '0';
- if (c < 0 || c > 9)
+ uint8_t c = *instr - '0';
+ if (c > 9)
return false;
if (value > UINT8_MAX/10 || (value == UINT8_MAX/10 && c > UINT8_MAX%10))
return false;
@@ -225,8 +225,8 @@ parse_uint16(const char *instr, uint16_t *outint)
uint16_t value = 0;
for (; *instr != '\0'; instr++) {
- int8_t c = *instr - '0';
- if (c < 0 || c > 9)
+ uint8_t c = *instr - '0';
+ if (c > 9)
return false;
if (value > UINT16_MAX/10 || (value == UINT16_MAX/10 && c > UINT16_MAX%10))
return false;
@@ -243,8 +243,8 @@ parse_uint32(const char *instr, uint32_t *outint)
uint32_t value = 0;
for (; *instr != '\0'; instr++) {
- int8_t c = *instr - '0';
- if (c < 0 || c > 9)
+ uint8_t c = *instr - '0';
+ if (c > 9)
return false;
if (value > UINT32_MAX/10L || (value == UINT32_MAX/10L && c > UINT32_MAX%10))
return false;
@@ -261,8 +261,8 @@ parse_uint64(const char *instr, uint64_t *outint)
uint64_t value = 0;
for (; *instr != '\0'; instr++) {
- int8_t c = *instr - '0';
- if (c < 0 || c > 9)
+ uint8_t c = *instr - '0';
+ if (c > 9)
return false;
if (value > UINT64_MAX/10LL || (value == UINT64_MAX/10LL && c > UINT64_MAX%10LL))
return false;
--
2.10.2