[master] 43757b25c varnishncsa: handle inexistent fields

Nils Goroll nils.goroll at uplex.de
Tue Dec 15 09:05:09 UTC 2020


commit 43757b25cf1f0a3f005471c182165de099c6bbf3
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Tue Dec 15 09:57:53 2020 +0100

    varnishncsa: handle inexistent fields
    
    fixes #3485

diff --git a/bin/varnishncsa/varnishncsa.c b/bin/varnishncsa/varnishncsa.c
index 520ea6dfb..9e2fc22d4 100644
--- a/bin/varnishncsa/varnishncsa.c
+++ b/bin/varnishncsa/varnishncsa.c
@@ -797,7 +797,8 @@ frag_fields(int force, const char *b, const char *e, ...)
 			n++;
 		}
 		assert(p != NULL && q != NULL);
-		assert(p < e && q > p);
+		if (p >= e || q <= p)
+			continue;
 		if (frag->gen != CTX.gen || force) {
 			/* We only grab the same matching field once */
 			frag->gen = CTX.gen;
diff --git a/bin/varnishtest/tests/u00003.vtc b/bin/varnishtest/tests/u00003.vtc
index e6dac92f1..680b1fa7a 100644
--- a/bin/varnishtest/tests/u00003.vtc
+++ b/bin/varnishtest/tests/u00003.vtc
@@ -142,12 +142,12 @@ shell -match {^\d+.\d{6} miss miss c 1001 quuz
 %{Varnish:vxid}x %{VCL_Log:quux}x"}
 
 # %{VSL:..}x
-shell -match {^req (\d+) rxreq \1 \d{10}\.\d{6} (\d+\.\d{6}) \d+\.\d{6} \2 -
-req (\d+) rxreq \3 \d{10}\.\d{6} (\d+\.\d{6}) \d+\.\d{6} \4 -
-req (\d+) rxreq \5 - - -$} \
+shell -match {^req (\d+) rxreq \1 \d{10}\.\d{6} (\d+\.\d{6}) \d+\.\d{6} \2 - -
+req (\d+) rxreq \3 \d{10}\.\d{6} (\d+\.\d{6}) \d+\.\d{6} \4 - -
+req (\d+) rxreq \5 - - - -$} \
 	{varnishncsa -n ${v1_name} -d -F "%{VSL:Begin}x \
 %{VSL:Begin[2]}x %{VSL:Timestamp:Resp}x \
-%{VSL:Timestamp:Resp[2]}x %{VSL:Timestamp:foo}x"}
+%{VSL:Timestamp:Resp[2]}x %{VSL:Timestamp:foo}x %{VSL:ReqURL[2]}x"}
 
 process p1 -stop -screen-dump
 process p1 -expect-text 1 0 {/1?foo=bar HTTP/1.1" 200 100 "-" "-"}


More information about the varnish-commit mailing list