Bug #1601
closed
Requestion subdomain with $HTTP["scheme"] and url.redirect with %0 kills server
Added by Anonymous about 17 years ago.
Updated almost 16 years ago.
Description
I'm using this term to create a systemwide subdomain which should only be accessed with https. non-https requests are getting identified by $HTTP["scheme"]
and then redirected to https://%0:444
(I'm using 444 as secure port).
If i now make a request to the site (browser or curl doesn't matter, curl output: (52) Empty reply from server) i will get a blank site and the lighttpd process gets killed. (php5-cgi is still running)
$HTTP["host"] =~ "^webmail\.(.*)$" {
$HTTP["scheme"] == "http" {
url.redirect = ( "^/(.*)" => "https://%0:444" )
}
server.document-root = "/usr/share/squirrelmail/"
}
strace/backtrace is available.
this bug is also reproducable (atleast for me).
-- fat-soeren
Files
You can use %n only in a =~ conditional block; so you could say it is a config error (you now at least know that it won't work how you want it to).
To fix the segfault, the following patch should do it. (%0 will be replaced with an empty string then):
diff --git a/src/configfile-glue.c b/src/configfile-glue.c
index 66a596e..65afd01 100644
--- a/src/configfile-glue.c
+++ b/src/configfile-glue.c
@@ -529,7 +529,7 @@ int config_check_cond(server *srv, connection *con, data_config *dc) {
int config_append_cond_match_buffer(connection *con, data_config *dc, buffer *buf, int n)
{
cond_cache_t *cache = &con->cond_cache[dc->context_ndx];
- if (n > cache->patterncount) {
+ if (n >= cache->patterncount) {
return 0;
}
But i think somehow an error should printed to the server log in such cases.
Replying to stbuehler:
You can use %n only in a =~ conditional block; so you could say it is a config error (you now at least know that it won't work how you want it to).
so it is not possible to use $HTTP["scheme"]
together with url.redirect? that sucks :|
-- fat-soeren
Replying to fat-soeren@web.de:
Replying to stbuehler:
You can use %n only in a =~ conditional block; so you could say it is a config error (you now at least know that it won't work how you want it to).
so it is not possible to use $HTTP["scheme"]
together with url.redirect? that sucks :|
I did not say that... just use $HTTP["scheme"] =~ ".*"
and you can use %0 (I don't see why you would want to use %0 after an equality test - you already know what it is)
But you cannot access the matched patterns of an outer conditional, that is right.
- Status changed from New to Fixed
- Resolution set to fixed
- Patch available set to No
Also available in: Atom
Fix segfault for appending matched parts if there was no regex matching (just give empty strings) (#1601)
git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2138 152afb58-edef-0310-8abb-c4023f1b3aa9