Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
nmap.11141
nmap-6.46-CVE-2018-15173_pcre_limits.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File nmap-6.46-CVE-2018-15173_pcre_limits.patch of Package nmap.11141
From 6d8bb6df229f7acf768bcebfe14cdc8c3dbbe92b Mon Sep 17 00:00:00 2001 From: dmiller <dmiller@e0a8ed71-7df4-0310-8962-fdc924857419> Date: Wed, 8 Aug 2018 16:36:21 +0000 Subject: [PATCH] Set limits on PCRE matches to avoid issues like #1147 CVE-2018-15173 --- service_scan.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/service_scan.cc b/service_scan.cc index 1fc8056884..79e92b8f21 100644 --- a/service_scan.cc +++ b/service_scan.cc @@ -489,6 +489,15 @@ void ServiceProbeMatch::InitMatch(const char *matchtext, int lineno) { if (pcre_errptr != NULL) fatal("%s: failed to pcre_study regexp on line %d of nmap-service-probes: %s\n", __func__, lineno, pcre_errptr); + // Set some limits to avoid evil match cases. + // These are flexible; if they cause problems, increase them. +#ifdef PCRE_ERROR_MATCHLIMIT + regex_extra->match_limit = 100000; // 100K +#endif +#ifdef PCRE_ERROR_RECURSIONLIMIT + regex_extra->match_limit_recursion = 10000; // 10K +#endif + free(modestr); free(flags); @@ -568,6 +577,12 @@ const struct MatchDetails *ServiceProbeMatch::testMatch(const u8 *buf, int bufle if (o.debugging || o.verbose > 1) error("Warning: Hit PCRE_ERROR_MATCHLIMIT when probing for service %s with the regex '%s'", servicename, matchstr); } else +#endif // PCRE_ERROR_MATCHLIMIT +#ifdef PCRE_ERROR_RECURSIONLIMIT + if (rc == PCRE_ERROR_RECURSIONLIMIT) { + if (o.debugging || o.verbose > 1) + error("Warning: Hit PCRE_ERROR_RECURSIONLIMIT when probing for service %s with the regex '%s'", servicename, matchstr); + } else #endif // PCRE_ERROR_MATCHLIMIT if (rc != PCRE_ERROR_NOMATCH) { fatal("Unexpected PCRE error (%d) when probing for service %s with the regex '%s'", rc, servicename, matchstr);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor