[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