From: Yann Ylavic Date: Thu, 8 Mar 2018 23:23:30 +0000 (+0000) Subject: Follow up to r1609680: simpler/faster ap_proxy_strcmp_ematch(). X-Git-Tag: 2.5.0-alpha2-ci-test-only~2804 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=17e80c8f32e240e4456befc67705f50d817182f4;p=thirdparty%2Fapache%2Fhttpd.git Follow up to r1609680: simpler/faster ap_proxy_strcmp_ematch(). No functional change. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1826289 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c index f2ea34d8af7..0a88c5bac74 100644 --- a/modules/proxy/proxy_util.c +++ b/modules/proxy/proxy_util.c @@ -1502,11 +1502,13 @@ static int ap_proxy_strcmp_ematch(const char *str, const char *expected) apr_size_t x, y; for (x = 0, y = 0; expected[y]; ++y, ++x) { - if ((!str[x]) && (expected[y] != '$' || !apr_isdigit(expected[y + 1]))) + int backref = (expected[y] == '$' && apr_isdigit(expected[y + 1])); + if (!str[x] && !backref) return -1; - if (expected[y] == '$' && apr_isdigit(expected[y + 1])) { - while (expected[y] == '$' && apr_isdigit(expected[y + 1])) + if (backref) { + do { y += 2; + } while (expected[y] == '$' && apr_isdigit(expected[y + 1])); if (!expected[y]) return 0; while (str[x]) {