Hi, squid developers
When reading squid-2.6-STABLE15 source code, I found a logical error in
the "if" statement at "src/HttpHdrRange.c" line 96:
if (!((p = strchr(field, '-')) || (p - field >= flen))) {
If p is NULL, (p - field) is meaningless. If p is not NULL, the latter
expression
won't be evaluated.
The statement should really be:
if (!((p = strchr(field, '-')) && (p - field < flen))) {
Attaching a diff which fixes the logical error.
Wenzhuo
--- src/HttpHdrRange.c.original 2006-04-28 18:17:18.000000000 +0800
+++ src/HttpHdrRange.c 2007-09-06 16:36:17.000000000 +0800
@@ -93,7 +93,7 @@
return NULL;
} else
/* must have a '-' somewhere in _this_ field */
- if (!((p = strchr(field, '-')) || (p - field >= flen))) {
+ if (!((p = strchr(field, '-')) && (p - field < flen))) {
debug(64, 2) ("ignoring invalid (missing '-') range-spec near: '%s'\n", field);
return NULL;
} else {