Project

General

Profile

Actions

Bug #1601

closed

Requestion subdomain with $HTTP["scheme"] and url.redirect with %0 kills server

Added by Anonymous almost 17 years ago. Updated over 15 years ago.

Status:
Fixed
Priority:
High
Category:
core
Target version:
-
ASK QUESTIONS IN Forums:

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

lighttpd.backtrace (33.8 KB) lighttpd.backtrace backtrace of the bug -- fat-soeren Anonymous, 2008-03-18 00:42
lighttpd.strace (75.7 KB) lighttpd.strace strace of the bug -- fat-soeren Anonymous, 2008-03-18 00:42
Actions #1

Updated by stbuehler almost 17 years ago

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.

Actions #2

Updated by Anonymous almost 17 years ago

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

Actions #3

Updated by stbuehler almost 17 years ago

Replying to :

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.

Actions #4

Updated by stbuehler over 16 years ago

  • Status changed from New to Fixed
  • Resolution set to fixed

Fixed segfault in r2138

Actions #5

Updated by stbuehler over 15 years ago

  • Patch available set to No
Actions

Also available in: Atom