From: Fabian Keil <fk@fabiankeil.de>
Date: Sun, 27 Aug 2023 10:26:02 +0000 (+0200)
Subject: pcre2 compile_pattern(): Actually pass the anchored pattern to pcre2_compile()
X-Git-Tag: v_4_0_0~154
X-Git-Url: http://www.privoxy.org/gitweb/%22https:/faq/introduction.html?a=commitdiff_plain;h=e73b93ea9ad1f3e980bd78ed3ebf65dedbb598a2;p=privoxy.git

pcre2 compile_pattern(): Actually pass the anchored pattern to pcre2_compile()

Previously the un-anchoring pattern was compiled resulting
in incorrect matches.

For example requests to:

    https://www.privoxy.org/user-manual/config.html

were redirected because of the default.action section:

    {+redirect{http://config.privoxy.org/}}
    # Sticky Actions = +redirect{http://config.privoxy.org/}
    # URL = http://www.privoxy.org/config
    # Redirected URL = http://www.privoxy.org/config
    # Redirect Destination = http://config.privoxy.org/
    .privoxy.org/config

As the path pattern is left-anchored it should not match.
---

diff --git a/urlmatch.c b/urlmatch.c
index 22feb9c8..494a69a9 100644
--- a/urlmatch.c
+++ b/urlmatch.c
@@ -666,7 +666,7 @@ static jb_err compile_pattern(const char *pattern, enum regex_anchoring anchorin
 
    snprintf(rebuf, rebuf_size, fmt, pattern);
 
-   *regex = pcre2_compile((const unsigned char *)pattern,
+   *regex = pcre2_compile((const unsigned char *)rebuf,
       PCRE2_ZERO_TERMINATED, PCRE2_CASELESS, &errcode,
       &error_offset, NULL);
    if (*regex == NULL)