net-snmp/net-snmp-5.5-tcp-pid.patch

61 lines
3.2 KiB
Diff

551030 - Memory corruption in TCP-MIB::tcpListenerProcess
Source: upstream, SVN rev. 17861
CHANGES: snmpd: Fixed invalid access to memory in TCP-MIB
diff --git a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
index 7259bf8..e274d19 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
@@ -155,6 +155,8 @@ tcpConnectionTable_rowreq_ctx_cleanup(tcpConnectionTable_rowreq_ctx *
/*
* TODO:211:o: |-> Perform extra tcpConnectionTable rowreq cleanup.
*/
+ netsnmp_access_tcpconn_entry_free(rowreq_ctx->data);
+ rowreq_ctx->data = NULL;
} /* tcpConnectionTable_rowreq_ctx_cleanup */
/**
diff --git a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
index 807dd9d..fec6bef 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
@@ -256,7 +256,8 @@ 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, 0);
+ netsnmp_access_tcpconn_container_free(raw_data,
+ NETSNMP_ACCESS_TCPCONN_FREE_DONT_CLEAR);
DEBUGMSGT(("verbose:tcpConnectionTable:tcpConnectionTable_cache_load",
"%d records\n", (int)CONTAINER_SIZE(container)));
diff --git a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c
index f3009dd..ebd672b 100644
--- a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c
+++ b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c
@@ -154,6 +154,8 @@ tcpListenerTable_rowreq_ctx_cleanup(tcpListenerTable_rowreq_ctx *
/*
* TODO:211:o: |-> Perform extra tcpListenerTable rowreq cleanup.
*/
+ netsnmp_access_tcpconn_entry_free(rowreq_ctx->data);
+ rowreq_ctx->data = NULL;
} /* tcpListenerTable_rowreq_ctx_cleanup */
/**
diff --git a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c
index 09ba655..b25d5db 100644
--- a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c
+++ b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c
@@ -254,7 +254,8 @@ 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, 0);
+ netsnmp_access_tcpconn_container_free(raw_data,
+ NETSNMP_ACCESS_TCPCONN_FREE_DONT_CLEAR);
DEBUGMSGT(("verbose:tcpListenerTable:tcpListenerTable_cache_load",
"%d records\n", (int)CONTAINER_SIZE(container)));