[master] 427f5f77a vsc: Avoid name interpretation as a format string in VRT_VSC_Alloc()

Nils Goroll nils.goroll at uplex.de
Mon Jun 3 13:20:05 UTC 2024


commit 427f5f77a389ddd3d5b3605ec78fc0c14146ad2c
Author: Stephane Cance <stephane.cance at varnish-software.com>
Date:   Mon May 13 14:59:39 2024 +0200

    vsc: Avoid name interpretation as a format string in VRT_VSC_Alloc()

diff --git a/bin/varnishd/common/common_vsc.c b/bin/varnishd/common/common_vsc.c
index 98b420b70..8455e4d95 100644
--- a/bin/varnishd/common/common_vsc.c
+++ b/bin/varnishd/common/common_vsc.c
@@ -84,14 +84,14 @@ static const size_t vsc_overhead = PRNDUP(sizeof(struct vsc_head));
 
 static struct vsc_seg *
 vrt_vsc_mksegv(struct vsmw_cluster *vc, const char *category,
-    size_t payload, const char *fmt, va_list va)
+    size_t payload, const char *prefix, const char *fmt, va_list va)
 {
 	struct vsc_seg *vsg;
 
 	ALLOC_OBJ(vsg, VSC_SEG_MAGIC);
 	AN(vsg);
 	vsg->seg = VSMW_Allocv(heritage.proc_vsmw, vc, category,
-	    VRT_VSC_Overhead(payload), NULL, fmt, va);
+	    VRT_VSC_Overhead(payload), prefix, fmt, va);
 	AN(vsg->seg);
 	vsg->vsm = heritage.proc_vsmw;
 	vsg->head = (void*)vsg->seg;
@@ -107,7 +107,7 @@ vrt_vsc_mksegf(const char *category, size_t payload, const char *fmt, ...)
 	struct vsc_seg *vsg;
 
 	va_start(ap, fmt);
-	vsg = vrt_vsc_mksegv(NULL, category, payload, fmt, ap);
+	vsg = vrt_vsc_mksegv(NULL, category, payload, NULL, fmt, ap);
 	va_end(ap);
 	return (vsg);
 }
@@ -140,7 +140,6 @@ VRT_VSC_Alloc(struct vsmw_cluster *vc, struct vsc_seg **sg,
     const unsigned char *jp, size_t sj, const char *fmt, va_list va)
 {
 	struct vsc_seg *vsg, *dvsg;
-	char buf[1024];
 	uintptr_t jjp;
 
 	vsc_lock();
@@ -168,14 +167,9 @@ VRT_VSC_Alloc(struct vsmw_cluster *vc, struct vsc_seg **sg,
 	AN(dvsg);
 	dvsg->refs++;
 
-	if (*fmt == '\0')
-		bprintf(buf, "%s", nm);
-	else
-		bprintf(buf, "%s.%s", nm, fmt);
-
 	AN(heritage.proc_vsmw);
 
-	vsg = vrt_vsc_mksegv(vc, VSC_CLASS, sd, buf, va);
+	vsg = vrt_vsc_mksegv(vc, VSC_CLASS, sd, nm, fmt, va);
 	AN(vsg);
 	vsg->nm = nm;
 	vsg->doc = dvsg;


More information about the varnish-commit mailing list