From: Amos Jeffries Date: Wed, 27 Aug 2014 14:41:52 +0000 (-0600) Subject: Ignore Range headers with unidentifiable byte-range values X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98fe02bd7e8705326ffdf1275b2b4ef35fa15c9e;p=thirdparty%2Fsquid.git Ignore Range headers with unidentifiable byte-range values If squid is unable to determine the byte value for ranges, treat the header as invalid. --- diff --git a/src/HttpHdrRange.cc b/src/HttpHdrRange.cc index a122651773..0d3c9df111 100644 --- a/src/HttpHdrRange.cc +++ b/src/HttpHdrRange.cc @@ -93,7 +93,7 @@ HttpHdrRangeSpec::parseInit(const char *field, int flen) /* is it a suffix-byte-range-spec ? */ if (*field == '-') { - if (!httpHeaderParseOffset(field + 1, &length)) + if (!httpHeaderParseOffset(field + 1, &length) || !known_spec(length)) return false; } else /* must have a '-' somewhere in _this_ field */ @@ -101,7 +101,7 @@ HttpHdrRangeSpec::parseInit(const char *field, int flen) debugs(64, 2, "ignoring invalid (missing '-') range-spec near: '" << field << "'"); return false; } else { - if (!httpHeaderParseOffset(field, &offset)) + if (!httpHeaderParseOffset(field, &offset) || !known_spec(offset)) return false; p++; @@ -110,7 +110,7 @@ HttpHdrRangeSpec::parseInit(const char *field, int flen) if (p - field < flen) { int64_t last_pos; - if (!httpHeaderParseOffset(p, &last_pos)) + if (!httpHeaderParseOffset(p, &last_pos) || !known_spec(last_pos)) return false; HttpHdrRangeSpec::HttpRange aSpec (offset, last_pos + 1);