summaryrefslogtreecommitdiff
path: root/print-snmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'print-snmp.c')
-rw-r--r--print-snmp.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/print-snmp.c b/print-snmp.c
index 1fc08f38..42c9785a 100644
--- a/print-snmp.c
+++ b/print-snmp.c
@@ -66,6 +66,7 @@
#include <stdio.h>
#include <string.h>
+#include <limits.h>
#ifdef USE_LIBSMI
#include <smi.h>
@@ -531,7 +532,7 @@ asn1_parse(netdissect_options *ndo,
break;
case INTEGER: {
- int32_t data;
+ uint32_t data;
elem->type = BE_INT;
data = 0;
@@ -540,7 +541,7 @@ asn1_parse(netdissect_options *ndo,
goto invalid;
}
if (GET_U_1(p) & ASN_BIT8) /* negative */
- data = -1;
+ data = UINT_MAX;
for (i = elem->asnlen; i != 0; p++, i--)
data = (data << ASN_SHIFT8) | GET_U_1(p);
elem->data.integer = data;
@@ -726,7 +727,8 @@ asn1_print(netdissect_options *ndo,
break;
case BE_OID: {
- int o = 0, first = -1;
+ int first = -1;
+ uint32_t o = 0;
p = (const u_char *)elem->data.raw;
i = asnlen;