]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Fix FileETag None directive.
authorJustin Erenkrantz <jerenkrantz@apache.org>
Sun, 1 Sep 2002 18:46:03 +0000 (18:46 +0000)
committerJustin Erenkrantz <jerenkrantz@apache.org>
Sun, 1 Sep 2002 18:46:03 +0000 (18:46 +0000)
- Fix segfault on strlen computation on the empty string in vlv case
- If the etag is "", don't set the ETag header to be "" - leave the
  header NULL instead.

Andrew's patch would change ap_meets_condition to accept "", but Justin
thinks it would be better just to sidestep it all together and not set
ETag when it would be "".

(Backport of patch applied to httpd-2.0 as original 1.3 code has the
same flaws.)

PR: 12202
Submitted by: Andrew Ho <andrew@tellme.com>

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@96610 13f79535-47bb-0310-9956-ffa450edef68

src/CHANGES
src/main/http_protocol.c

index ce07eff9a2ac91833a6bcea05d32d6633690414c..5d679e36266a45236db61042d3e78b05c5024e38 100644 (file)
@@ -1,4 +1,8 @@
 Changes with Apache 1.3.27
+
+  *) Fix FileETags none operation.  PR 12202.
+     [Justin Erenkrantz, Andrew Ho <andrew@tellme.com>]
+
   *) Win32: Fix one byte buffer overflow in ap_get_win32_interpreter
      when a CGI script's #! line does not contain a \r or \n (i.e.
      a line feed character) in the first 1023 bytes. The overflow
index 3ac861178e32d25113092eb86a6cd39f1d2a60d6..51e7d6e7864d9021550276e2a6b4969bb511f394 100644 (file)
@@ -737,6 +737,11 @@ API_EXPORT(void) ap_set_etag(request_rec *r)
 
     if (!r->vlist_validator) {
         etag = ap_make_etag(r, 0);
+
+        /* If we get a blank etag back, don't set the header. */
+        if (!etag[0]) {
+            return;
+        }
     }
     else {
         /* If we have a variant list validator (vlv) due to the
@@ -760,8 +765,12 @@ API_EXPORT(void) ap_set_etag(request_rec *r)
                
         variant_etag = ap_make_etag(r, vlv_weak);
 
-        /* merge variant_etag and vlv into a structured etag */
+        /* If we get a blank etag back, don't append vlv and stop now. */
+        if (!variant_etag[0]) {
+            return;
+        }
 
+        /* merge variant_etag and vlv into a structured etag */
         variant_etag[strlen(variant_etag) - 1] = '\0';
         if (vlv_weak)
             vlv += 3;