Make sure pcre PCRE_EXTRA_MATCH_LIMIT_RECURSION check works with strict compiler settings.

remotes/origin/master-1.0.x
Victor Julien 16 years ago
parent 5bde121754
commit 42e8a01221

@ -199,11 +199,11 @@ AC_INIT(configure.in)
fi fi
AC_TRY_COMPILE([ #include <pcre.h> ], AC_TRY_COMPILE([ #include <pcre.h> ],
[ int eo; eo |= PCRE_EXTRA_MATCH_LIMIT_RECURSION; ], [ int eo = 0; eo |= PCRE_EXTRA_MATCH_LIMIT_RECURSION; ],
[ pcre_match_limit_recursion_available=yes ], [:] [ pcre_match_limit_recursion_available=yes ], [:]
) )
if test "$pcre_match_limit_recursion_available" != "yes"; then if test "$pcre_match_limit_recursion_available" != "yes"; then
CFLAGS="${CFLAGS} -DMISSING_PCRE_MATCH_RLIMIT" CFLAGS="${CFLAGS} -DNO_PCRE_MATCH_RLIMIT"
echo echo
echo " Warning! pcre extra opt PCRE_EXTRA_MATCH_LIMIT_RECURSION not found" echo " Warning! pcre extra opt PCRE_EXTRA_MATCH_LIMIT_RECURSION not found"
echo " This could lead to potential DoS please upgrade to pcre >= 6.5" echo " This could lead to potential DoS please upgrade to pcre >= 6.5"

@ -358,21 +358,21 @@ DetectPcreData *DetectPcreParse (char *regexstr)
pd->sd->match_limit = pcre_match_limit; pd->sd->match_limit = pcre_match_limit;
pd->sd->flags |= PCRE_EXTRA_MATCH_LIMIT; pd->sd->flags |= PCRE_EXTRA_MATCH_LIMIT;
} }
#ifndef MISSING_PCRE_MATCH_RLIMIT #ifndef NO_PCRE_MATCH_RLIMIT
if(pcre_match_limit_recursion >= -1) { if(pcre_match_limit_recursion >= -1) {
pd->sd->match_limit_recursion = pcre_match_limit_recursion; pd->sd->match_limit_recursion = pcre_match_limit_recursion;
pd->sd->flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION; pd->sd->flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION;
} }
#endif /* MISSING_PCRE_MATCH_RLIMIT */ #endif /* NO_PCRE_MATCH_RLIMIT */
} }
else { else {
pd->sd->match_limit = MATCH_LIMIT_DEFAULT; pd->sd->match_limit = MATCH_LIMIT_DEFAULT;
pd->sd->flags |= PCRE_EXTRA_MATCH_LIMIT; pd->sd->flags |= PCRE_EXTRA_MATCH_LIMIT;
#ifndef MISSING_PCRE_MATCH_RLIMIT #ifndef NO_PCRE_MATCH_RLIMIT
pd->sd->match_limit_recursion = MATCH_LIMIT_DEFAULT; pd->sd->match_limit_recursion = MATCH_LIMIT_DEFAULT;
pd->sd->flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION; pd->sd->flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION;
#endif /* MISSING_PCRE_MATCH_RLIMIT */ #endif /* NO_PCRE_MATCH_RLIMIT */
} }
} }

Loading…
Cancel
Save