Bug 243291

Summary: www/squid PCRE regexp doesn't work anymore
Product: Ports & Packages Reporter: OlivierW <olivierw1+bugzilla-freebsd>
Component: Individual Port(s)Assignee: freebsd-ports-bugs mailing list <ports-bugs>
Status: New ---    
Severity: Affects Only Me CC: timp87
Priority: --- Flags: bugzilla: maintainer-feedback? (timp87)
Version: Latest   
Hardware: amd64   
OS: Any   

Description OlivierW 2020-01-12 10:11:01 UTC
Hello,

Two years ago, I have helped enabling PCRE regexp in Squid's port, see #223505.
Back then I was using Squid 3.5.x on FreeBSD 11.x and it was fine :-)

Now, I am updating to Squid 4.9 on FreeBSD 12.1 and PCRE regexp don't work anymore, I am getting back the error message I previously had before #223505 : "repetition-operator operand invalid".
I've also tried to install squid3 (3.5.28_3), and got the same error.


The good news, I have found I need to add:
--enable-gnuregex
at the end of CONFIGURE_ARGS= in the port Makefile.
This option is documented here: https://github.com/squid-cache/squid/blob/77b1029d207083d583d81d2f2fb7a840e0f23cab/configure.ac#L3615

It does fix my problem, but is it the right way to do it? I mean, in their explanation of the option, they say it is for Windows or old UNIX which don't have a regex lib.
Has anything has changed in FreeBSD 12 regarding regexp? Does anyone know why that happens?

I have tried compiling with and without the PCRE option added in #223505, and it does work in both case: this option seems useless with "--enable-gnuregex".

What should I do to help? Is it OK to directly add this "--enable-gnuregex" option to CONFIGURE_ARGS? Or should I add a configurable option?
I can provide a patch, I just need to know what is best to do :-)

Best Regards,
Olivier
Comment 1 timp87 2020-02-05 07:52:51 UTC
(In reply to OlivierW from comment #0)
Hello,
thanks a lot for the report! And sorry for the delay.

I'm gonna update squid to 4.10 and try to fix it.

Well, to get right answers about --enable-gnuregex it's better to ask squid maillist instead and rise an discussion there.

I'm trying to understand how it may be fixed the right way.
Comment 2 timp87 2020-02-05 08:02:37 UTC
(In reply to OlivierW from comment #0)

Could you share your example of ACL to check it?
Comment 3 OlivierW 2020-03-01 17:08:50 UTC
Hello,

Thanks for your answer!

I currently don't have access to the specific regexes, but they are similar to:
acl example url_regex -i ^http:\/\/www\.example\.com\/.*?\.js

I've tried this one in a VM with FreeBSD 12.1 and Squid 4.10 from ports and I am getting the error.
I've found I can fix it by removing the lazy quantifier (from .*? to .*):
acl example url_regex -i ^http:\/\/www\.example\.com\/.*\.js

Both regexes are accepted with Squid 4.10 compiled with "--enable-gnuregex".


Maybe I should just change my regexes to remove the lazy quantifier? Hoping it's the only case causing a problem.
As you said, I'll ask on Squid's mailing list to know what is the right thing to do.

Best Regards,
Olivier
Comment 4 timp87 2020-05-18 06:20:43 UTC
(In reply to OlivierW from comment #3)
Have you got any answer from squid maillist?