[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