blob: c71f01299bfefc596f06d6a8979a13dd2ff4e787 [file] [log] [blame]
From 7bdaa32c80bb7d37668c1ff6d88bb02428459a0f Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 21 Oct 2020 09:11:20 -0700
Subject: [PATCH] libopeniscsiusr: Compare with max int instead of max long
This compares value member of int_list_tbl struct which is of unsigned
int type.
struct int_list_tbl {
const char *name;
unsigned int value;
};
Clang compiler reports this comparison when
-Wtautological-constant-out-of-range-compare is enabled
| idbm.c:1042:2: error: result of comparison of constant 18446744073709551615 with expression of type 'unsigned int' is always true [-Werror,-Wtautological-constant-out-of-range-compare]
| _rec_int_list(SESSION_CHAP_ALGS, recs, node, session.auth.chap_algs,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| idbm.c:263:23: note: expanded from macro '_rec_int_list'
| if (_org->_name[_i] != ~0UL) { \
| ~~~~~~~~~~~~~~~ ^ ~~~~
Since max value for int can be less than unsinged long e.g. on LP64 its
better to use UINT_MAX here
Upstream-Status: Submitted [https://github.com/open-iscsi/open-iscsi/pull/227]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
libopeniscsiusr/idbm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libopeniscsiusr/idbm.c b/libopeniscsiusr/idbm.c
index 7bc2381..060196f 100644
--- a/libopeniscsiusr/idbm.c
+++ b/libopeniscsiusr/idbm.c
@@ -260,7 +260,7 @@ do {\
_recs[_n].type = TYPE_INT_LIST; \
_strncpy(_recs[_n].name, _key, NAME_MAXVAL); \
for (unsigned int _i = 0; _i < ARRAY_LEN(_org->_name); _i++) { \
- if (_org->_name[_i] != ~0UL) { \
+ if (_org->_name[_i] != UINT_MAX) { \
for (unsigned int _j = 0; _j < ARRAY_LEN(_tbl); _j++) { \
if (_tbl[_j].value == _org->_name[_i]) { \
strcat(_recs[_n].value, _tbl[_j].name); \
--
2.29.0