New idea about the error from uri_escape(), at least:
uri_escape() takes an optional second parameter, which is treated as a range and wrapped in brackets to build a regex. That parameter is not meant to hold tainted user input, but CGI::param() returns a list of scalars if its parameter names a field that appears more than once in the request's query string. So basically when we access the TPAC with certain URIs with repeated fields in certain cases, I suspect we're triggering this (unsure whether this relates to the other EGWeb/cstore error or not, and as yet unable to reproduce).
Jason, with regards to the uri_escape() error, would you be able to find a URI in your access logs that corresponds to this error, and confirm whether accessing the TPAC by that specific URI causes a reproducible error?
New idea about the error from uri_escape(), at least:
uri_escape() takes an optional second parameter, which is treated as a range and wrapped in brackets to build a regex. That parameter is not meant to hold tainted user input, but CGI::param() returns a list of scalars if its parameter names a field that appears more than once in the request's query string. So basically when we access the TPAC with certain URIs with repeated fields in certain cases, I suspect we're triggering this (unsure whether this relates to the other EGWeb/cstore error or not, and as yet unable to reproduce).
Jason, with regards to the uri_escape() error, would you be able to find a URI in your access logs that corresponds to this error, and confirm whether accessing the TPAC by that specific URI causes a reproducible error?