]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
ip parsing: fix cppcheck negative shift warning 1943/head
authorVictor Julien <victor@inliniac.net>
Wed, 16 Mar 2016 11:37:25 +0000 (12:37 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 16 Mar 2016 11:37:25 +0000 (12:37 +0100)
[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
src/util-radix-tree.c

index 1f22d8640d20afc6d557b1851eca42182561f6c1..91c3baab99eb48d27234d8df52d40b63c613dcc4 100644 (file)
@@ -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;
         }
index 2304d593f42d7cff247bc17e6969c0f2d06c4b50..928761d95153b791e07c79f19a935cb0b344de5c 100644 (file)
@@ -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)) {