aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2009-10-05 21:39:07 +0000
committerStig Bjørlykke <stig@bjorlykke.org>2009-10-05 21:39:07 +0000
commit902a1013a49b4caec1a107f3afed077095c665a6 (patch)
tree21cd32e136ac490bac7c33fd7e0117609fc996df /asn1
parent978bd4982db822c38e463ba81a3a7fcc73e1403d (diff)
Return from dissect_snmp_VarBind() when detecting invalid oid.
svn path=/trunk/; revision=30348
Diffstat (limited to 'asn1')
-rw-r--r--asn1/snmp/packet-snmp-template.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/asn1/snmp/packet-snmp-template.c b/asn1/snmp/packet-snmp-template.c
index d703de9ecd..7c858efa6d 100644
--- a/asn1/snmp/packet-snmp-template.c
+++ b/asn1/snmp/packet-snmp-template.c
@@ -453,7 +453,14 @@ extern int dissect_snmp_VarBind(gboolean implicit_tag _U_,
add_oid_debug_subtree(oid_info,pt_name);
- if (subids && oid_matched+oid_left) {
+ if (!subids) {
+ proto_item* pi = proto_tree_add_text(pt_name,tvb, 0, 0, "invalid oid: %s", oid_bytes);
+ pt = proto_item_add_subtree(pi, ett_decoding_error);
+ expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "invalid oid: %s", oid_bytes);
+ return dissect_unknown_ber(actx->pinfo, tvb, name_offset, pt);
+ }
+
+ if (oid_matched+oid_left) {
oid_string = oid_subid2string(subids,oid_matched+oid_left);
}