aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/snmp
diff options
context:
space:
mode:
authorstig <stig@f5534014-38df-0310-8fa8-9805f1628bb7>2009-10-05 21:39:07 +0000
committerstig <stig@f5534014-38df-0310-8fa8-9805f1628bb7>2009-10-05 21:39:07 +0000
commit1b4b0e9b1b32f9653878b40ceeb8dfc5c9e58112 (patch)
tree21cd32e136ac490bac7c33fd7e0117609fc996df /asn1/snmp
parent83ee67af4fc084956f2e8cc105eb84cd7e7166b5 (diff)
Return from dissect_snmp_VarBind() when detecting invalid oid.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@30348 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'asn1/snmp')
-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);
}