components/net-snmp/patches/042.17758422.patch
author Tomas Klacko <tomas.klacko@oracle.com>
Wed, 30 Apr 2014 13:55:52 -0700
branchs11-update
changeset 3106 2deddd0bf46b
permissions -rw-r--r--
17758422 50 or more exec options in snmpd.conf results in errors

This has been fixed in upstream version 5.7.2 (see README).
http://sourceforge.net/p/net-snmp/code/ci/4d38895f459a1df24f68c4a60e4caf6a778d8c1f

--- a/agent/mibgroup/agent/extend.c
+++ b/agent/mibgroup/agent/extend.c
@@ -473,10 +473,21 @@ extend_parse_config(const char *token, char *cptr)
             
     } else if (!strcmp( token, "sh"   ) ||
                !strcmp( token, "exec" )) {
-        if ( num_compatability_entries == max_compatability_entries )
+        if ( num_compatability_entries == max_compatability_entries ) {
             /* XXX - should really use dynamic allocation */
-            config_perror("No further UCD-compatible entries" );
-        else
+            netsnmp_old_extend *new_compatability_entries;
+            new_compatability_entries = realloc(compatability_entries,
+                             max_compatability_entries*2*sizeof(netsnmp_old_extend));
+            if (!new_compatability_entries)
+                config_perror("No further UCD-compatible entries" );
+            else {
+                memset(new_compatability_entries+num_compatability_entries, 0,
+                        sizeof(netsnmp_old_extend)*max_compatability_entries);
+                max_compatability_entries *= 2;
+                compatability_entries = new_compatability_entries;
+            }
+        }
+        if (num_compatability_entries != max_compatability_entries)
             compatability_entries[
                 num_compatability_entries++ ].exec_entry = extension;
     }