summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko2007-10-14 02:34:20 +0000
committerDenis Vlasenko2007-10-14 02:34:20 +0000
commit4a4575686eca96e7d393ba5c08ae3549bed2c1f0 (patch)
tree6090ec57858e4ba466b1fabb96fc515d09a27214
parent9435993b01d789ebb984457ca2ba0eec627470db (diff)
downloadbusybox-4a4575686eca96e7d393ba5c08ae3549bed2c1f0.zip
busybox-4a4575686eca96e7d393ba5c08ae3549bed2c1f0.tar.gz
httpd: fix bug where we were trying to read more POSTDATA than content-length
-rw-r--r--networking/httpd.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/networking/httpd.c b/networking/httpd.c
index 6118502..82755a0 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1051,6 +1051,17 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
* and send it to the peer. So please no SIGPIPEs! */
signal(SIGPIPE, SIG_IGN);
+ // We inconsistently handle a case when more POSTDATA from network
+ // is coming than we expected. We may give *some part* of that
+ // extra data to CGI.
+
+ //if (hdr_cnt > post_len) {
+ // /* We got more POSTDATA from network than we expected */
+ // hdr_cnt = post_len;
+ //}
+ post_len -= hdr_cnt;
+ /* post_len - number of POST bytes not yet read from network */
+
/* NB: breaking out of this loop jumps to log_and_exit() */
out_cnt = 0;
while (1) {