Re: exec problem with 5.1

Dave Shield <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
    [ Reminder - *please* don't mail me privately, without copying
     any responses to the mailing list.  I don't have the time
     or inclination to offer private, unpaid, SNMP consultancy.
     Keep discussions to the list, where others can both learn
     and offer advice.  Thanks.   ]

On Sat, 2006-03-18 at 15:55 +0100, Tomasz Nowak wrote:
> Dave Shield <[email protected]> wrote:
> > That one I wasn't able to reproduce.
> > Can you try with the attached patch, and see if you still have
> > the same problem.  If so, please could you let me know the relevant
> > lines from your snmpd.conf
> 
> But the second problem still exists.
> Information given below should help you be able
> to reproduce the bug.


> /etc/snmp/snmpd.conf part:
> 
> extend onetping /root/ping.sh onet.pl

	[snip]

Not immediately, no.
I tried with a version of your script, and everything worked fine.
But it suddenly occurred to me to try with *two* identically
named "extend" directives, and that did trigger the same symptoms.
The registration of the nsExtend{Config,Output1}Tables failed,
but the config handling routine didn't detect this, so carried
on setting things up for the (manually implemented) Output2Table.

I suspect that either you have a duplicate "extend" entry in your
config file, or the system is reading in the config file twice.
(It doesn't check for this, although it really should do so).

I'm appending a patch to perform some basic error checking on this
registration.  It's not complete, and almost certainly introduces
a minor memory leak.  But it ought to fix the immediate problem.

Dave
extend.diff (text/x-patch, 615 B)
--- extend.c.cln	2006-03-15 18:14:18.000000000 +0000
+++ extend.c	2006-03-21 08:16:39.000000000 +0000
@@ -341,7 +341,12 @@
     extension->row = row;
     netsnmp_table_row_add_index( row, ASN_OCTET_STR,
                                  exec_name, strlen(exec_name));
-    netsnmp_table_data_add_row( dinfo, row);
+    if ( netsnmp_table_data_add_row( dinfo, row) != SNMPERR_SUCCESS ) {
+        /* _free_extension( extension, ereg ); */
+        SNMP_FREE( extension );  /* Probably not sufficient */
+        SNMP_FREE( row );
+        return NULL;
+    }
 
     ereg->num_entries++;
         /*
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.