# HG changeset patch # User Adam Chlipala # Date 1259249757 18000 # Node ID c2317cfb99ec139005178ea1c3d1ed8577069c55 # Parent 38411c2cd363490a81039fc438d5591c5c415484 Fix parsing of long FastCGI lengths diff -r 38411c2cd363 -r c2317cfb99ec src/c/fastcgi.c --- a/src/c/fastcgi.c Wed Nov 25 09:48:23 2009 -0500 +++ b/src/c/fastcgi.c Thu Nov 26 10:35:57 2009 -0500 @@ -223,7 +223,7 @@ else if (*len < 4) return -1; else { - int r = (((*buf)[3] & 0x7f) << 24) + ((*buf)[2] << 16) + ((*buf)[1] << 8) + (*buf)[0]; + int r = (((*buf)[0] & 0x7f) << 24) + ((*buf)[1] << 16) + ((*buf)[2] << 8) + (*buf)[3]; *buf += 4; *len -= 4; return r; @@ -236,9 +236,9 @@ if ((nameLength = read_funny_len(buf, &len)) < 0) return -1; if ((valueLength = read_funny_len(buf, &len)) < 0) - return -1; + return -2; if (len < nameLength + valueLength) - return -1; + return -3; if (nameLength+1 > nv->name_len) { nv->name_len = nameLength+1; @@ -374,7 +374,7 @@ goto done; } - write_stderr(out, "PARAM: %s -> %s\n", hs.nvps[used_nvps].name, hs.nvps[used_nvps].value); + //write_stderr(out, "PARAM: %s -> %s\n", hs.nvps[used_nvps].name, hs.nvps[used_nvps].value); ++used_nvps; }