[master] bfbd2963f change debug.sndbuf to only handle int buffer lengths

Nils Goroll nils.goroll at uplex.de
Wed Apr 24 12:28:07 UTC 2019


commit bfbd2963fc719ac78eba5f68259a86e3401cac65
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Wed Apr 24 14:26:40 2019 +0200

    change debug.sndbuf to only handle int buffer lengths
    
    should also fix printf format errors on 32bit

diff --git a/lib/libvmod_debug/vmod_debug.c b/lib/libvmod_debug/vmod_debug.c
index 870250ce3..e2fef3125 100644
--- a/lib/libvmod_debug/vmod_debug.c
+++ b/lib/libvmod_debug/vmod_debug.c
@@ -809,9 +809,9 @@ xyzzy_release_vcl_busy(VRT_CTX)
 }
 
 VCL_VOID
-xyzzy_sndbuf(VRT_CTX, VCL_BYTES buflen)
+xyzzy_sndbuf(VRT_CTX, VCL_BYTES arg)
 {
-	int fd = -1, oldbuf, newbuf;
+	int fd = -1, oldbuf, newbuf, buflen;
 	socklen_t intlen = sizeof(int);
 
 	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
@@ -832,6 +832,13 @@ xyzzy_sndbuf(VRT_CTX, VCL_BYTES buflen)
 
 	xxxassert(fd >= 0);
 
+	if (arg > INT_MAX)
+		buflen = INT_MAX;
+	else if (arg <= 0)
+		buflen = 0;
+	else
+		buflen = (int)arg;
+
 	oldbuf = 0;
 	AZ(getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &oldbuf, &intlen));
 
@@ -840,6 +847,6 @@ xyzzy_sndbuf(VRT_CTX, VCL_BYTES buflen)
 	AZ(getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &newbuf, &intlen));
 
 	AN(ctx->vsl);
-	VSLb(ctx->vsl, SLT_Debug, "SO_SNDBUF fd=%d old=%d new=%ld actual=%d",
+	VSLb(ctx->vsl, SLT_Debug, "SO_SNDBUF fd=%d old=%d new=%d actual=%d",
 	    fd, oldbuf, buflen, newbuf);
 }


More information about the varnish-commit mailing list