17812413 net-snmp 5.4.1 dumps core when snmpd.conf contains an incorrect logmatch param.
authorMohana Rao Gorai <mohana.gorai@oracle.com>
Thu, 20 Mar 2014 18:12:09 -0700
changeset 1776 614fab3c797e
parent 1775 221ebe7e8513
child 1777 6ea41a44b2a3
17812413 net-snmp 5.4.1 dumps core when snmpd.conf contains an incorrect logmatch param.
components/net-snmp/patches/040.17812413.logmatch_free.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/patches/040.17812413.logmatch_free.patch	Thu Mar 20 18:12:09 2014 -0700
@@ -0,0 +1,33 @@
+# This patch has been submitted upstream. But it has not been accepted yet.
+
+--- a/agent/mibgroup/ucd-snmp/logmatch.c	Thu Sep 14 17:48:50 2006
++++ b/agent/mibgroup/ucd-snmp/logmatch.c	Wed Feb  5 23:56:38 2014
+@@ -118,8 +118,8 @@
+      */
+ 
+     for (i = 0; i < logmatchCount; i++) {
+-
+-        regfree(&(logmatchTable[i].regexBuffer));
++        if (logmatchTable[i].myRegexError == 0)
++            regfree(&(logmatchTable[i].regexBuffer));
+     }
+     logmatchCount = 0;
+ }
+@@ -212,6 +212,17 @@
+             regcomp(&(logmatchTable[logmatchCount].regexBuffer),
+                     logmatchTable[logmatchCount].regEx,
+                     REG_EXTENDED | REG_NOSUB);
++		if (logmatchTable[logmatchCount].myRegexError)
++		{
++			char regexErrorString[100];
++			regerror(logmatchTable[logmatchCount].myRegexError,
++					&(logmatchTable[logmatchCount].regexBuffer),
++					regexErrorString, 100);
++			regexErrorString[99] = '\0';
++			snmp_log(LOG_ERR, "Could not process the logmatch regex - %s," \
++					"\n since regcomp() failed with - %s\n",
++					logmatchTable[logmatchCount].regEx, regexErrorString);
++		}
+ 
+         if (logmatchTable[logmatchCount].frequency > 0) {
+             snmp_alarm_register(logmatchTable[logmatchCount].frequency,