| 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 |
| |