[master] b64281a Make sure we neuter the next entry after the one we just created to prevent old junk on the workspace from being taken for valid.
Poul-Henning Kamp
phk at varnish-cache.org
Wed Jun 22 11:30:21 CEST 2011
commit b64281a7a9f7ce74daad6763c9d34a444c8ac00a
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Wed Jun 22 09:29:46 2011 +0000
Make sure we neuter the next entry after the one we just created
to prevent old junk on the workspace from being taken for valid.
diff --git a/bin/varnishd/cache_vary.c b/bin/varnishd/cache_vary.c
index 27abf74..01816f6 100644
--- a/bin/varnishd/cache_vary.c
+++ b/bin/varnishd/cache_vary.c
@@ -209,13 +209,19 @@ VRY_Match(const struct sess *sp, const uint8_t *vary)
oflo = 1;
}
- /* We MUST have space for one entry */
- assert(vsp + ln < sp->wrk->vary_e);
+ /*
+ * We MUST have space for one entry and the end marker
+ * after it, which prevents old junk from confusing us
+ */
+ assert(vsp + ln + 2 < sp->wrk->vary_e);
vbe16enc(vsp, (uint16_t)lh);
memcpy(vsp + 2, vary + 2, vary[2] + 2);
- if (h != NULL && e != NULL)
+ if (h != NULL && e != NULL) {
memcpy(vsp + 2 + vsp[2] + 2, h, e - h);
+ vsp[2 + vary[2] + 2 + (e - h) + 2] = '\0';
+ } else
+ vsp[2 + vary[2] + 2 + 2] = '\0';
i = vry_cmp(&vary, &vsp);
assert(i != 1); /* hdr must be the same now */
More information about the varnish-commit
mailing list