vorbis: Reorder conditions to avoid possible overread

This can trigger a single-byte overread if the codebook has the maximum
number of entries.

Fixes #6743.
This commit is contained in:
Mark Thompson 2017-10-17 22:25:46 +01:00
parent 242d8c8763
commit c37de51920

View File

@ -58,7 +58,7 @@ int ff_vorbis_len2vlc(uint8_t *bits, uint32_t *codes, unsigned num)
uint32_t exit_at_level[33] = { 404 };
unsigned i, j, p, code;
for (p = 0; (bits[p] == 0) && (p < num); ++p)
for (p = 0; (p < num) && (bits[p] == 0); ++p)
;
if (p == num)
return 0;
@ -71,7 +71,7 @@ int ff_vorbis_len2vlc(uint8_t *bits, uint32_t *codes, unsigned num)
++p;
for (i = p; (bits[i] == 0) && (i < num); ++i)
for (i = p; (i < num) && (bits[i] == 0); ++i)
;
if (i == num)
return 0;