RE: What to do if i find a bug in dissector?
"tim endean" <[email protected]>
| Newsgroups | gmane.network.ethereal.devel |
|---|---|
| Message-ID | <[email protected]> |
I had a look the possible bug in the ber dissector. It is a indefinite length zero length construction issue. I checked the specs and its not explicitly not allowed, however it doesn't make common sense. If I was Eugene I would be having quiet words with the vendor of the equipment that generates zero length indefinite length. Tim -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Anders Broman (AL/EAB) Sent: 30 May 2006 11:41 To: Ethereal development Subject: RE: [Ethereal-dev] What to do if i find a bug in dissector? Hi, Send them as diff -u files and we'll have a look at them. Brg Anders -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Tarlovskij Eugene Sent: den 30 maj 2006 11:25 To: [email protected] Subject: [Ethereal-dev] What to do if i find a bug in dissector? I use Ethereal to capture VoIP traffic especially H248 and MEGACO . Recently I've found bugs in H248 and BER dissectors. I have already fixed some of them but do not know how to contribute those bugs. Do I need to discuss fixes here first? _______________________________________________ Ethereal-dev mailing list [email protected] http://www.ethereal.com/mailman/listinfo/ethereal-dev _______________________________________________ Ethereal-dev mailing list [email protected] http://www.ethereal.com/mailman/listinfo/ethereal-dev _______________________________________________ Ethereal-dev mailing list [email protected] http://www.ethereal.com/mailman/listinfo/ethereal-dev
ber.diff
(application/octet-stream, 621 B)
Index: packet-ber.c
===================================================================
--- packet-ber.c (revision 18189)
+++ packet-ber.c (working copy)
@@ -1052,7 +1052,13 @@
offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
offset = get_ber_length(tree, tvb, offset, &len, &ind_field);
eoffset = offset + len;
-
+ if (ind_field && (len == 2))
+ {
+ // disgusting indefinite length zero length field, what are these people doing
+ offset = eoffset;
+ continue;
+ }
ber_sequence_try_again:
/* have we run out of known entries in the sequence ?*/
if(!seq->func) {