From: Justin Erenkrantz Date: Sun, 1 Sep 2002 18:46:03 +0000 (+0000) Subject: Fix FileETag None directive. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=267ad35cd5c7306734c187af57690e7904aa3f25;p=thirdparty%2Fapache%2Fhttpd.git Fix FileETag None directive. - 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 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@96610 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/CHANGES b/src/CHANGES index ce07eff9a2a..5d679e36266 100644 --- a/src/CHANGES +++ b/src/CHANGES @@ -1,4 +1,8 @@ Changes with Apache 1.3.27 + + *) Fix FileETags none operation. PR 12202. + [Justin Erenkrantz, Andrew Ho ] + *) 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 diff --git a/src/main/http_protocol.c b/src/main/http_protocol.c index 3ac861178e3..51e7d6e7864 100644 --- a/src/main/http_protocol.c +++ b/src/main/http_protocol.c @@ -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;