From ef4c71705281f38f7972b3a980bfb03d1d04d662 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Wed, 16 Mar 2016 12:37:25 +0100 Subject: [PATCH] ip parsing: fix cppcheck negative shift warning [src/util-ip.c:104]: (error) Shifting a negative value is undefined behaviour [src/util-radix-tree.c:1160]: (error) Shifting a negative value is undefined behaviour [src/util-radix-tree.c:1357]: (error) Shifting a negative value is undefined behaviour [src/util-radix-tree.c:1380]: (error) Shifting a negative value is undefined behaviour [src/util-radix-tree.c:1438]: (error) Shifting a negative value is undefined behaviour --- src/util-ip.c | 6 +++--- src/util-radix-tree.c | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/util-ip.c b/src/util-ip.c index 1f22d8640d..91c3baab99 100644 --- a/src/util-ip.c +++ b/src/util-ip.c @@ -93,15 +93,15 @@ struct in6_addr *ValidateIPV6Address(const char *addr_str) */ void MaskIPNetblock(uint8_t *stream, uint8_t netmask, uint16_t key_bitlen) { - int mask = 0; + uint32_t mask = 0; int i = 0; int bytes = key_bitlen / 8; for (i = 0; i < bytes; i++) { - mask = -1; + mask = UINT_MAX; if ( ((i + 1) * 8) > netmask) { if ( ((i + 1) * 8 - netmask) < 8) - mask = -1 << ((i + 1) * 8 - netmask); + mask = UINT_MAX << ((i + 1) * 8 - netmask); else mask = 0; } diff --git a/src/util-radix-tree.c b/src/util-radix-tree.c index 2304d593f4..928761d951 100644 --- a/src/util-radix-tree.c +++ b/src/util-radix-tree.c @@ -1127,7 +1127,7 @@ static void SCRadixRemoveKey(uint8_t *key_stream, uint16_t key_bitlen, SCRadixPrefix *prefix = NULL; - int mask = 0; + uint32_t mask = 0; int i = 0; if (node == NULL) @@ -1157,7 +1157,7 @@ static void SCRadixRemoveKey(uint8_t *key_stream, uint16_t key_bitlen, i = prefix->bitlen / 8; if (SCMemcmp(node->prefix->stream, prefix->stream, i) == 0) { - mask = -1 << (8 - prefix->bitlen % 8); + mask = UINT_MAX << (8 - prefix->bitlen % 8); if (prefix->bitlen % 8 == 0 || (node->prefix->stream[i] & mask) == (prefix->stream[i] & mask)) { @@ -1334,7 +1334,7 @@ static inline SCRadixNode *SCRadixFindKeyIPNetblock(uint8_t *key_stream, uint8_t SCRadixNode *node, void **user_data_result) { SCRadixNode *netmask_node = NULL; - int mask = 0; + uint32_t mask = 0; int bytes = 0; int i = 0; int j = 0; @@ -1351,10 +1351,10 @@ static inline SCRadixNode *SCRadixFindKeyIPNetblock(uint8_t *key_stream, uint8_t for (j = 0; j < netmask_node->netmask_cnt; j++) { bytes = key_bitlen / 8; for (i = 0; i < bytes; i++) { - mask = -1; + mask = UINT_MAX; if ( ((i + 1) * 8) > netmask_node->netmasks[j]) { if ( ((i + 1) * 8 - netmask_node->netmasks[j]) < 8) - mask = -1 << ((i + 1) * 8 - netmask_node->netmasks[j]); + mask = UINT_MAX << ((i + 1) * 8 - netmask_node->netmasks[j]); else mask = 0; } @@ -1377,7 +1377,7 @@ static inline SCRadixNode *SCRadixFindKeyIPNetblock(uint8_t *key_stream, uint8_t return NULL; if (SCMemcmp(node->prefix->stream, key_stream, bytes) == 0) { - mask = -1 << (8 - key_bitlen % 8); + mask = UINT_MAX << (8 - key_bitlen % 8); if (key_bitlen % 8 == 0 || (node->prefix->stream[bytes] & mask) == (key_stream[bytes] & mask)) { @@ -1406,7 +1406,7 @@ static SCRadixNode *SCRadixFindKey(uint8_t *key_stream, uint16_t key_bitlen, return NULL; SCRadixNode *node = tree->head; - int mask = 0; + uint32_t mask = 0; int bytes = 0; uint8_t tmp_stream[255]; @@ -1435,7 +1435,7 @@ static SCRadixNode *SCRadixFindKey(uint8_t *key_stream, uint16_t key_bitlen, bytes = key_bitlen / 8; if (SCMemcmp(node->prefix->stream, tmp_stream, bytes) == 0) { - mask = -1 << (8 - key_bitlen % 8); + mask = UINT_MAX << (8 - key_bitlen % 8); if (key_bitlen % 8 == 0 || (node->prefix->stream[bytes] & mask) == (tmp_stream[bytes] & mask)) { -- 2.47.2