Commit cd2e99e9 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

deal with negative Content-Length: headers by ignoring the info

parent 0359ae8f
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -668,12 +668,21 @@ CURLcode Curl_readwrite(struct connectdata *conn,
            if ((k->httpcode != 416) &&
                checkprefix("Content-Length:", k->p)) {
              contentlength = curlx_strtoofft(k->p+15, NULL, 10);
              if (data->set.max_filesize && contentlength >
                  data->set.max_filesize) {
              if (data->set.max_filesize &&
                  contentlength > data->set.max_filesize) {
                failf(data, "Maximum file size exceeded");
                return CURLE_FILESIZE_EXCEEDED;
              }
              if(contentlength >= 0)
                conn->size = contentlength;
              else {
                /* Negative Content-Length is really odd, and we know it
                   happens for example when older Apache servers send large
                   files */
                conn->bits.close = TRUE;
                infof(data, "Negative content-length: %" FORMAT_OFF_T
                      ", closing after transfer\n", contentlength);
              }
            }
            /* check for Content-Type: header lines to get the mime-type */
            else if (checkprefix("Content-Type:", k->p)) {