]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
boyermoore: avoid one tolower call
authorPhilippe Antoine <contact@catenacyber.fr>
Mon, 3 Jun 2019 14:50:28 +0000 (16:50 +0200)
committerVictor Julien <victor@inliniac.net>
Thu, 29 Aug 2019 09:15:29 +0000 (11:15 +0200)
Fixes #1218

src/suricata.h
src/util-spm-bm.c

index 1b0e72a99eb953dfb6702da04a2f6632cea8361b..ca3bdffb8d2c261d14e5929de47bdf4a811cdc81 100644 (file)
@@ -178,6 +178,7 @@ extern uint16_t g_vlan_mask;
 
 #include <ctype.h>
 #define u8_tolower(c) tolower((uint8_t)(c))
+#define u8_toupper(c) toupper((uint8_t)(c))
 
 void EngineStop(void);
 void EngineDone(void);
index 94dbcb82b16e3dc6262b16a3946c5157c49d4a99..a9772bb40eada0b36cb05bb8ad9624af86e2be5d 100644 (file)
@@ -221,6 +221,7 @@ static void PreBmBcNocase(const uint8_t *x, uint16_t m, uint16_t *bmBc)
     }
     for (i = 0; i < m - 1; ++i) {
         bmBc[u8_tolower((unsigned char)x[i])] = m - 1 - i;
+        bmBc[u8_toupper((unsigned char)x[i])] = m - 1 - i;
     }
 }
 
@@ -372,7 +373,7 @@ uint8_t *BoyerMooreNocase(const uint8_t *x, uint16_t m, const uint8_t *y, uint32
         if (i < 0) {
             return (uint8_t *)(y + j);
         } else {
-            j += (m1 = bmGs[i]) > (m2 = bmBc[u8_tolower(y[i + j])] - m + 1 + i)?
+            j += (m1 = bmGs[i]) > (m2 = bmBc[y[i + j]] - m + 1 + i)?
                 m1: m2;
         }
     }