aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2005-09-16 08:30:35 +0000
committerGuy Harris <guy@alum.mit.edu>2005-09-16 08:30:35 +0000
commit806a9d66acf1d5075bbbe3a3bdc2a96fd44e4873 (patch)
tree4f61e0a99599c91b2a2d5105916e9b1abd115e3a
parent5502846e7bf7a9c057d7a628bf8ec0410b41dec5 (diff)
Note problems with some values that appear in, for example, some SNMP
captures. svn path=/trunk/; revision=15833
-rw-r--r--epan/dissectors/packet-ber.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c
index 7b643ce804..9816de81a0 100644
--- a/epan/dissectors/packet-ber.c
+++ b/epan/dissectors/packet-ber.c
@@ -748,6 +748,17 @@ printf("INTEGERnew dissect_ber_integer(%s) entered implicit_tag:%d \n",name,impl
}
/* ok, we cant handle >4 byte integers so lets fake them */
+ /*
+ * XXX - should we handle large integers with a bignum type,
+ * and an FT_BIGNUM field type? This code currently has trouble
+ * with, for example, INTEGER (0..4294967295), as a value in the
+ * range 2147483648 to 0..4294967295 is represented as 5 bytes.
+ *
+ * There should at least be a way to indicate that the value we
+ * returned didn't fit in a 32-bit signed integer, so our caller
+ * can, if they didn't supply an hf_id, indicate that the value
+ * didn't fit.
+ */
if(len>8){
header_field_info *hfinfo;
proto_item *pi = NULL;