diff --git a/src/SNMP.cpp b/src/SNMP.cpp index 93c3596b04..ce2769f103 100644 --- a/src/SNMP.cpp +++ b/src/SNMP.cpp @@ -124,8 +124,7 @@ void SNMP::handle_async_response(struct snmp_pdu *pdu, const char *agent_ip) { } break; case ASN_OCTET_STR: { - // ntop->getTrace()->traceEvent(TRACE_WARNING, "%s = %s", rsp_oid, - // vp->val.string); + // ntop->getTrace()->traceEvent(TRACE_WARNING, "%s = %s", rsp_oid, vp->val.string); char buf[512]; bool is_printable = true; u_int i, len = min(sizeof(buf) - 1, vp->val_len); @@ -133,6 +132,7 @@ void SNMP::handle_async_response(struct snmp_pdu *pdu, const char *agent_ip) { for (i = 0; i < len; i++) { if((!isprint(vp->val.string[i])) && (!isspace(vp->val.string[i])) + && (!ispunct(vp->val.string[i])) // && (vp->val.string[i] < 191) /* Windows-1252 */ ) { is_printable = false; diff --git a/third-party/snmp/asn1.c b/third-party/snmp/asn1.c index 2e1ef68b35..26c7ee9db3 100644 --- a/third-party/snmp/asn1.c +++ b/third-party/snmp/asn1.c @@ -592,7 +592,11 @@ int asn1_parse_string_type(ASN1Parser *parser, int *type, char **dest) /* Check for IPv4 addresses */ u_int8_t v1 = (*dest)[0] & 0xFF, v2 = (*dest)[1] & 0xFF, v3 = (*dest)[2] & 0xFF, v4 = (*dest)[3] & 0xFF; - if(isalnum(v1) && isalnum(v2) && isalnum(v3) && isalnum(v4)) + if((isalnum(v1) || ispunct(v1)) + && (isalnum(v2) || ispunct(v2)) + && (isalnum(v3) || ispunct(v3)) + && (isalnum(v4) || ispunct(v4)) + ) /* this looks like a string */; else { char tmp[24];