tcpdump mailing list archives

Re: [libpcap] Uninitialized scalar variable


From: Guy Harris <guy () alum mit edu>
Date: Tue, 27 Jan 2015 02:14:59 -0800


On Jan 27, 2015, at 1:58 AM, PEUGNEZ Baptiste <baptiste.peugnez () cea fr> wrote:

I do computer security studies and I wanted to test Coverity, a source code analysis tool. If you're interested, I 
corrected a problem in /pcap-linux.c/ file: uninitialized variable (/req.tp_frame_size/).

You will find above the Github commit.

https://github.com/peugnezb/libpcap/commit/2bbb0d9f3e1f0337985b4fa8033d465e598ecc46

Adding the check should be harmless.

However, the error message should probably be something such as "internal error: unknown TPACKET_ value XXX", where XXX 
is the value of handlep->tp_version, because, in the current code, that would happen only if handlep->tp_version had 
never been set - it's never set to a value other than TPACKET_V1, TPACKET_V2, or TPACKET_V3, and it's only set to 
TPACKET_V3 if HAVE_TPACKET3 is defined and only set to TPACKET_V2 if HAVE_TPACKET2 is defined (set by init_tpacket()), 
so the default case in that switch should never be reached.

That error message would make it clearer that either 1) some weird glitch happened in the hardware or in some software 
outside libpcap or 2) there's a case that the analysis above missed, and would give some data that would help figure 
out which of those is the case.

(Sadly, most compilers don't do enough data flow analysis to either prove that it can't happen without a hardware 
glitch or random out-of-bounds store or to show how it *can* happen and thus to show where the code needs to be fixed.)
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers


Current thread: