Sanity improvements to oc_dec_headerin() error returns.
authorTimothy B. Terriberry <tterribe@xiph.org>
Wed, 27 Jul 2016 01:29:39 +0000 (18:29 -0700)
committerTimothy B. Terriberry <tterribe@xiph.org>
Wed, 27 Jul 2016 01:44:39 +0000 (18:44 -0700)
commit50fd339b4302710eee9a2e06c393dd9ee12c7566
treed43a33c68587650811bc616a815a2c7d885f84ee
parent5a5f5bb20c742ec65becadae08880ecaaf97633c
Sanity improvements to oc_dec_headerin() error returns.

In the case where we got a data packet before receiving all three
 headers, the old code would check to see if the second through
 seventh bytes matched the magic string "theora" (extremely
 unlikely, but possible), and if so, return TH_EBADHEADER, otherwise
 return TH_ENOTFORMAT.
That this was not consistent was a bit non-sensical.

5a5f5bb20c74 changed to returning TH_EBADHEADER if we got a data
 packet after receiving the first header, but left the old behavior
 for the first packet.
Change instead to explicitly return TH_ENOTFORMAT if the first
 header was missing (since we only check one bit of the packet to
 determine whether or not it's a data packet, odds are it's a packet
 for some other kind of data, like a Vorbis header).
We continue to return TH_EBADHEADER if we see a data packet after
 encountering a valid header, but before reading all three.

Also re-arrange the NULL checks to follow continue to allow the
 undocumented ability to pass in NULL for parameters which are not
 needed by the next header in the sequence.
E.g., it's perfectly all right to pass NULL for _setup when
 expecting to read the comment header next.
In this case we'll now return TH_EBADHEADER instead of TH_EFAULT if
 the packet was actually a data packet.
lib/decinfo.c