From: Amos Jeffries Date: Tue, 26 Aug 2014 16:27:23 +0000 (-0700) Subject: Ignore Range headers with unidentifiable byte-range values X-Git-Tag: SQUID_3_4_7~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c030ccae4a0caf62372bf361c75547763345562;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 a47fdae4a2..6aeb93b0af 100644 --- a/src/HttpHdrRange.cc +++ b/src/HttpHdrRange.cc @@ -92,7 +92,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 */ @@ -100,7 +100,7 @@ HttpHdrRangeSpec::parseInit(const char *field, int flen) debugs(64, 2, "invalid (missing '-') range-spec near: '" << field << "'"); return false; } else { - if (!httpHeaderParseOffset(field, &offset)) + if (!httpHeaderParseOffset(field, &offset) || !known_spec(offset)) return false; ++p; @@ -109,7 +109,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; // RFC 2616 s14.35.1 MUST: last-byte-pos >= first-byte-pos