From: Fredrik Tolf Date: Wed, 31 Dec 2008 10:22:13 +0000 (+0100) Subject: Check the output from passdata in htparser. X-Git-Tag: 0.1~113 X-Git-Url: http://www.dolda2000.com/gitweb/?p=ashd.git;a=commitdiff_plain;h=a06a2fbdf3cd4dc4728c437304478184902e3aa8 Check the output from passdata in htparser. --- diff --git a/src/htparser.c b/src/htparser.c index 5d7a932..07f3dd6 100644 --- a/src/htparser.c +++ b/src/htparser.c @@ -365,8 +365,10 @@ static void serve(struct muth *muth, va_list args) */ if((hd = getheader(req, "content-length")) != NULL) { dlen = atoo(hd); - if(dlen > 0) - passdata(fd, cfd, &inbuf, dlen); + if(dlen > 0) { + if(passdata(fd, cfd, &inbuf, dlen) < 0) + goto out; + } } /* Make sure to send EOF */ shutdown(cfd, SHUT_WR); @@ -386,7 +388,8 @@ static void serve(struct muth *muth, va_list args) * Pass the actual output: */ sizebuf(outbuf, 65536); - sent = passdata(cfd, fd, &outbuf, -1); + if((sent = passdata(cfd, fd, &outbuf, -1)) < 0) + goto out; sent -= headoff; /*