Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > c0394d3068b44395994f031447c8052d > files > 51

net-snmp-5.3.2.2-7.el5_4.2.src.rpm

518633 -  snmpd leaks memory

Fix leaks in ipAddressPrefixTable_container_load,
ipv6ScopeZoneIndexTable_container_load, udpEndpointTable_container_load,
ipDefaultRouterTable_container_load, ipIfStatsTable_container_load,
udpEndpointTable_container_load and tcpListenerTable_container_load

SVN revs. 17719, 17722, 17734

diff --git a/net-snmp/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c b/net-snmp/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
index fec6bef..807dd9d 100644
--- a/net-snmp/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
+++ b/net-snmp/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
@@ -256,8 +256,7 @@ tcpConnectionTable_container_load(netsnmp_container *container)
      * free the container. we've either claimed each entry, or released it,
      * so the dal function doesn't need to clear the container.
      */
-    netsnmp_access_tcpconn_container_free(raw_data,
-                                          NETSNMP_ACCESS_TCPCONN_FREE_DONT_CLEAR);
+    netsnmp_access_tcpconn_container_free(raw_data, 0);
 
     DEBUGMSGT(("verbose:tcpConnectionTable:tcpConnectionTable_cache_load",
                "%d records\n", (int)CONTAINER_SIZE(container)));
diff --git a/net-snmp/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c b/net-snmp/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c
index b25d5db..09ba655 100644
--- a/net-snmp/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c
+++ b/net-snmp/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c
@@ -254,8 +254,7 @@ tcpListenerTable_container_load(netsnmp_container *container)
      * free the container. we've either claimed each entry, or released it,
      * so the dal function doesn't need to clear the container.
      */
-    netsnmp_access_tcpconn_container_free(raw_data,
-                                          NETSNMP_ACCESS_TCPCONN_FREE_DONT_CLEAR);
+    netsnmp_access_tcpconn_container_free(raw_data, 0);
 
     DEBUGMSGT(("verbose:tcpListenerTable:tcpListenerTable_cache_load",
                "%d records\n", (int)CONTAINER_SIZE(container)));
diff --git a/net-snmp/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c b/net-snmp/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c
index f3ce6f5..c3d62b7 100644
--- a/net-snmp/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c
+++ b/net-snmp/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c
@@ -290,8 +290,7 @@ udpEndpointTable_container_load(netsnmp_container *container)
 
     ITERATOR_RELEASE(ep_it);
 
-    netsnmp_access_udp_endpoint_container_free(ep_c,
-                                               NETSNMP_ACCESS_UDP_ENDPOINT_FREE_DONT_CLEAR);
+    netsnmp_access_udp_endpoint_container_free(ep_c, 0);
 
 
     DEBUGMSGT(("verbose:udpEndpointTable:udpEndpointTable_container_load",
diff --git a/net-snmp/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c b/net-snmp/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
index 7fc0a60..ec4e579 100644
--- a/net-snmp/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
+++ b/net-snmp/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
@@ -312,6 +312,7 @@ ipAddressPrefixTable_container_load(netsnmp_container *container)
         rowreq_ctx = NULL;
         ++count;
     }
+    ITERATOR_RELEASE(addr_it);
 
     DEBUGMSGT(("verbose:ipAddressPrefixTable:ipAddressPrefixTable_container_load", "inserted %d records\n", count));
 
diff --git a/net-snmp/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c b/net-snmp/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c
index f9aca75..09a000c 100644
--- a/net-snmp/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c
+++ b/net-snmp/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c
@@ -160,6 +160,8 @@ ipDefaultRouterTable_rowreq_ctx_cleanup(ipDefaultRouterTable_rowreq_ctx *
     /*
      * TODO:211:o: |-> Perform extra ipDefaultRouterTable rowreq cleanup.
      */
+    netsnmp_access_defaultrouter_entry_free(rowreq_ctx->data);
+    rowreq_ctx->data = NULL;
 }                               /* ipDefaultRouterTable_rowreq_ctx_cleanup */
 
 /**
diff --git a/net-snmp/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c b/net-snmp/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c
index 074a3c7..065c730 100644
--- a/net-snmp/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c
+++ b/net-snmp/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c
@@ -162,6 +162,8 @@ ipIfStatsTable_rowreq_ctx_cleanup(ipIfStatsTable_rowreq_ctx * rowreq_ctx)
     /*
      * TODO:211:o: |-> Perform extra ipIfStatsTable rowreq cleanup.
      */
+    netsnmp_access_systemstats_entry_free(rowreq_ctx->data);
+    rowreq_ctx->data = NULL;
 }                               /* ipIfStatsTable_rowreq_ctx_cleanup */
 
 /**
diff --git a/net-snmp/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c b/net-snmp/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c
index 32c666c..b7bad27 100644
--- a/net-snmp/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c
+++ b/net-snmp/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c
@@ -160,6 +160,8 @@ ipSystemStatsTable_rowreq_ctx_cleanup(ipSystemStatsTable_rowreq_ctx *
     /*
      * TODO:211:o: |-> Perform extra ipSystemStatsTable rowreq cleanup.
      */
+    netsnmp_access_systemstats_entry_free(rowreq_ctx->data);
+    rowreq_ctx->data = NULL;
 }                               /* ipSystemStatsTable_rowreq_ctx_cleanup */
 
 /**
diff --git a/net-snmp/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c b/net-snmp/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c
index 28ea0c4..eec2a4e 100644
--- a/net-snmp/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c
+++ b/net-snmp/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c
@@ -159,6 +159,8 @@ ipv6ScopeZoneIndexTable_rowreq_ctx_cleanup
     /*
      * TODO:211:o: |-> Perform extra ipv6ScopeZoneIndexTable rowreq cleanup.
      */
+    netsnmp_access_scopezone_entry_free(rowreq_ctx->data);
+    rowreq_ctx->data = NULL;
 }                               /* ipv6ScopeZoneIndexTable_rowreq_ctx_cleanup */
 
 /**
diff -up net-snmp-5.3.2.2/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c.old net-snmp-5.3.2.2/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
--- a/net-snmp-5.3.2.2/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c.old	2009-08-21 16:52:26.000000000 +0200
+++ b/net-snmp-5.3.2.2/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c	2009-08-21 16:52:05.000000000 +0200
@@ -270,6 +270,8 @@ _load4(netsnmp_container *container, u_i
 
     container = netsnmp_file_text_parse(fp, container, PM_USER_FUNCTION,
                                         0, &lpi);
+    netsnmp_file_release(fp);
+    free(fp);
     return (NULL == container);
 }
 
@@ -303,6 +305,8 @@ _load6(netsnmp_container *container, u_i
     container = netsnmp_file_text_parse(fp, container, PM_USER_FUNCTION,
                                         0, &lpi);
 
+    netsnmp_file_release(fp);
+    free(fp);
     return (NULL == container);
 }
 #endif /* INET6 */