[master] 35bc77071 VMOD_Panic: avoid double panic with NULL vcs/version
Nils Goroll
nils.goroll at uplex.de
Wed Apr 9 14:26:07 UTC 2025
commit 35bc77071a16430cafcdb7ef1e89bc6e43f5539a
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Wed Apr 9 16:15:52 2025 +0200
VMOD_Panic: avoid double panic with NULL vcs/version
seen:
§5 0x000055a60d249491 in VAS_Fail (func=0x55a60d2b6456 "VSB_quote_pfx", file=0x55a60d2b6372 "vsb.c", line=545,
cond=0x55a60d27e06d "p != NULL", kind=VAS_ASSERT) at vas.c:67
§6 0x000055a60d2587d5 in VSB_quote_pfx (s=0x55a60d2f4d78 <pan_vsb_storage>, pfx=0x55a60d2b192e "", v=0x0, len=-1,
how=8) at vsb.c:545
§7 0x000055a60d258d41 in VSB_quote (s=0x55a60d2f4d78 <pan_vsb_storage>, v=0x0, len=-1, how=8) at vsb.c:652
§8 0x000055a60d1cb946 in VMOD_Panic (vsb=0x55a60d2f4d78 <pan_vsb_storage>) at cache/cache_vrt_vmod.c:214
diff --git a/bin/varnishd/cache/cache_vrt_vmod.c b/bin/varnishd/cache/cache_vrt_vmod.c
index 3b5e7c564..ca5e37c65 100644
--- a/bin/varnishd/cache/cache_vrt_vmod.c
+++ b/bin/varnishd/cache/cache_vrt_vmod.c
@@ -198,6 +198,8 @@ VPI_Vmod_Unload(VRT_CTX, struct vmod **hdl)
FREE_OBJ(v);
}
+#define nvl(x, y) ((x) ? (x) : (y))
+
void
VMOD_Panic(struct vsb *vsb)
{
@@ -211,9 +213,9 @@ VMOD_Panic(struct vsb *vsb)
VSB_printf(vsb, "p=%p, abi=\"%s\", vrt=%u.%u,\n",
v, v->abi, v->vrt_major, v->vrt_minor);
VSB_bcat(vsb, "vcs=", 4);
- VSB_quote(vsb, v->vcs, -1, VSB_QUOTE_CSTR);
+ VSB_quote(vsb, nvl(v->vcs, ""), -1, VSB_QUOTE_CSTR);
VSB_bcat(vsb, ", version=", 10);
- VSB_quote(vsb, v->version, -1, VSB_QUOTE_CSTR);
+ VSB_quote(vsb, nvl(v->version, ""), -1, VSB_QUOTE_CSTR);
VSB_indent(vsb, -2);
VSB_bcat(vsb, "},\n", 3);
}
More information about the varnish-commit
mailing list