On Oct 8, 2015, at 11:33 AM, Michael Richardson <m...@sandelman.ca> wrote:

> <fx.leb...@yahoo.com> wrote:
>> Using pcap_major_version() and pcap_minor_version()) in tcpdump when
>> reading a file, I found:
> 
>> Most pcap file have major.minor: 2.4 (current PCAP_VERSION_MAJOR and
>> PCAP_VERSION_MINOR),
> 
>> a few have: 1.0 (ahcp.pcap, hdlc_slarp.pcap, msnlb2.pcap,
>> of10_7050q.pcap and ospf3_auth.pcap), one have: 12336.12336
>> (cve2015-0261-crash.pcap), doubtless via fuzzing.
> 
>> To avoid case like the last, I'm thinking of adding a sanity check on
>> major/minor.
> 
>> Hence my question:
> 
>> What are the pairs major / minor to authorize currently?
> 
> I think that as long as major <= PCAP_VERSION_MAJOR, we are good.

We might also want to, if major == PCAP_VERSION_MAJOR, make sure minor <= 
PCAP_VERSION_MINOR, just in case somebody does a pcap 2.5 that code that only 
knows up to version 2.4 can't handle.

Given the common convention of "change a major version if code that handles the 
new version would have to use a different code path to read the old version, 
change a minor version if code that handles the new version can still handle 
the old version but code that only knows about the old version can't handle the 
new version", we should require major == PCAP_VERSION_MAJOR, but, as libpcap 
never had such a check, perhaps whatever versions 1 (or 0, if there was a 
version 0) looked like, the code to handle version 2 can read them, so I 
wouldn't add a requirement that major == PCAP_VERSION_MAJOR.

We also have a special case for a major version of 543, which was the bright 
idea of somebody at Data General:

         * In addition, DG/UX tcpdump writes out files with a version
         * number of 543.0, and with the caplen and len fields in the
         * pre-2.3 order.

and we should continue to handle that.
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers@lists.tcpdump.org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Reply via email to