[Pkg-net-snmp-devel] Bug#503293: libsnmp-python: netsnmp python snmpwalk memory leak

Gabriele Messineo gabriele.messineo at winext.eu
Fri Oct 24 13:43:44 UTC 2008


Package: libsnmp-python
Version: 5.4.1~dfsg-10
Severity: important
Tags: patch


Hi,
I would like to re-open netsnmp Bug "[ 1868278 ] A bug in python useing netsnmp.snmpwalk".

That's because cited patch ( http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=497656 ) was addressing a seg fault. 

I did some tests in order to find the memory leak, I hope it can be avoided by applying the following patch:

--- python/netsnmp/client_intf.c
+++ python/netsnmp/client_intf.c
@@ -1778,7 +1778,7 @@
   PyObject *varlist;
   PyObject *varbind;
   PyObject *val_tuple = NULL;
-  PyObject *varbinds;
+  PyObject *varbinds = NULL;
   int varlist_len = 0;
   int varlist_ind;
   netsnmp_session *ss;
@@ -2003,14 +2003,13 @@
 			  (len ? Py_BuildValue("s#", str_buf, len) :
 			   Py_BuildValue("")));
             
-    	  Py_DECREF(varbind);
-
           } else {
 	    /* Return None for this variable. */
             _PyTuple_Resize(&val_tuple, result_count+1);
 	    PyTuple_SetItem(val_tuple, result_count++, Py_BuildValue(""));
 	    printf("netsnmp_walk: bad varbind (%d)\n", varlist_ind);
           }	
+    	  if(varbind) Py_DECREF(varbind);
         }
         /* reuse the response as the next pdu to send */
         pdu = snmp_pdu_create(SNMP_MSG_GETNEXT);
@@ -2036,6 +2035,7 @@
   }
 
  done:
+  if(varbinds) Py_DECREF(varbinds);
   SAFE_FREE(oid_arr);
   return (val_tuple ? val_tuple : Py_BuildValue(""));
 }

I'm not experienced with Python C API but I think the root cause was a missing Py_DECREF on some PyObjects. 

I suggest to test the patch to verify it is not breaking anything.

Thanks and Regards.

Gabriele Messineo




-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.18-6-xen-686 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages libsnmp-python depends on:
ii  libc6                      2.7-15        GNU C Library: Shared libraries
ii  libsnmp15                  5.4.1~dfsg-10 SNMP (Simple Network Management Pr
ii  python                     2.5.2-2       An interactive high-level object-o
ii  python-central             0.6.8         register and build utility for Pyt

libsnmp-python recommends no packages.

libsnmp-python suggests no packages.

-- no debconf information





More information about the Pkg-net-snmp-devel mailing list