]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fix off by one in SNMP subsystem
authorSebastian Krahmer <krahmer@suse.com>
Mon, 15 Sep 2014 04:58:34 +0000 (22:58 -0600)
committerAmos Jeffries <squid3@treenet.co.nz>
Mon, 15 Sep 2014 04:58:34 +0000 (22:58 -0600)
src/snmp_core.cc

index 25af575080c16445b15e4772d3e8b91a6c24b0b4..bdd688f3d2303a70f10b82b4e0b17b3bc8cd3276 100644 (file)
@@ -362,7 +362,7 @@ snmpClosePorts(void)
 void
 snmpHandleUdp(int sock, void *not_used)
 {
-    LOCAL_ARRAY(char, buf, SNMP_REQUEST_SIZE);
+    static char buf[SNMP_REQUEST_SIZE];
     Ip::Address from;
     SnmpRequest *snmp_rq;
     int len;
@@ -371,16 +371,11 @@ snmpHandleUdp(int sock, void *not_used)
 
     Comm::SetSelect(sock, COMM_SELECT_READ, snmpHandleUdp, NULL, 0);
 
-    memset(buf, '\0', SNMP_REQUEST_SIZE);
+    memset(buf, '\0', sizeof(buf));
 
-    len = comm_udp_recvfrom(sock,
-                            buf,
-                            SNMP_REQUEST_SIZE,
-                            0,
-                            from);
+    len = comm_udp_recvfrom(sock, buf, sizeof(buf)-1, 0, from);
 
     if (len > 0) {
-        buf[len] = '\0';
         debugs(49, 3, "snmpHandleUdp: FD " << sock << ": received " << len << " bytes from " << from << ".");
 
         snmp_rq = (SnmpRequest *)xcalloc(1, sizeof(SnmpRequest));