[AGENT++] Crash in SNMP++ (snmpmsg.cpp)

Peter Kassel pkassel at denk-fabrik.de
Thu Apr 21 09:58:22 CEST 2011


Hi,

snmp++v3.2.25 crashes in snmpmsg.cpp SnmpMessage::unload when a device
returns an empty ip address value. The following patch fixes this problem.

Regards,
Peter


--- snmpmsg.cpp
+++ snmpmsg.cpp
@@ -757,23 +757,28 @@
        // ip address
      case sNMP_SYNTAX_IPADDR:
        {
     char buffer[42];

-    if (vp->val_len == 16)
-      sprintf( buffer, "%02x%02x:%02x%02x:%02x%02x:%02x%02x:"
-           "%02x%02x:%02x%02x:%02x%02x:%02x%02x",
-           vp->val.string[ 0], vp->val.string[ 1], vp->val.string[ 2],
-           vp->val.string[ 3], vp->val.string[ 4], vp->val.string[ 5],
-           vp->val.string[ 6], vp->val.string[ 7], vp->val.string[ 8],
-           vp->val.string[ 9], vp->val.string[10], vp->val.string[11],
-           vp->val.string[12], vp->val.string[13], vp->val.string[14],
-           vp->val.string[15]);
-    else
-      sprintf( buffer,"%d.%d.%d.%d",
-           vp->val.string[0], vp->val.string[1],
-           vp->val.string[2], vp->val.string[3]);
-    IpAddress ipaddress( buffer);
-    tempvb.set_value( ipaddress);
+        buffer[0] = 0;
+
+        if (vp->val_len == 16)
+          sprintf( buffer, "%02x%02x:%02x%02x:%02x%02x:%02x%02x:"
+             "%02x%02x:%02x%02x:%02x%02x:%02x%02x",
+             vp->val.string[ 0], vp->val.string[ 1], vp->val.string[ 2],
+             vp->val.string[ 3], vp->val.string[ 4], vp->val.string[ 5],
+             vp->val.string[ 6], vp->val.string[ 7], vp->val.string[ 8],
+             vp->val.string[ 9], vp->val.string[10], vp->val.string[11],
+             vp->val.string[12], vp->val.string[13], vp->val.string[14],
+             vp->val.string[15]);
+        else if (vp->val_len == 4)
+          sprintf( buffer,"%d.%d.%d.%d",
+             vp->val.string[0], vp->val.string[1],
+             vp->val.string[2], vp->val.string[3]);
+        if (buffer[0])
+        {
+          IpAddress ipaddress( buffer);
+          tempvb.set_value( ipaddress);
+        }
        }
        break;





More information about the AGENTPP mailing list