lvqcl
2016-Jan-08 18:27 UTC
[flac-dev] [PATCH] add a check in FLAC__bitwriter_write_raw_uint32()
FLAC__bitwriter_write_raw_uint32() assumes that the unused bits of the
'val' argument are equal to zero, and doesn't check it (an assert
was
added recently, but it's disabled in non-debug builds anyway).
But it makes more difficult to catch metadata length overflow (such as too
big picture or padding size), so there's a reason to add such check.
The function FLAC__bitwriter_write_raw_uint32() simply check sthat unused bits
are 0
if((bits < 32) && (val>>bits != 0))
return false;
and then calls FLAC__bitwriter_write_raw_uint32_nocheck().
The new function FLAC__bitwriter_write_raw_uint32_nocheck() is
an old FLAC__bitwriter_write_raw_uint32() that doesn't do this check,
and all other functions in bitwriter.c call it if they can guarantee
that all unused bits are 0.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: write_bits_check.zip
Type: application/zip
Size: 1793 bytes
Desc: not available
Url :
http://lists.xiph.org/pipermail/flac-dev/attachments/20160108/5d37e462/attachment.zip
Erik de Castro Lopo
2016-Jan-09 00:02 UTC
[flac-dev] [PATCH] add a check in FLAC__bitwriter_write_raw_uint32()
lvqcl wrote:> FLAC__bitwriter_write_raw_uint32() assumes that the unused bits of the > 'val' argument are equal to zero, and doesn't check it (an assert was > added recently, but it's disabled in non-debug builds anyway). > > But it makes more difficult to catch metadata length overflow (such as too > big picture or padding size), so there's a reason to add such check. > > > The function FLAC__bitwriter_write_raw_uint32() simply check sthat unused bits are 0 > > if((bits < 32) && (val>>bits != 0)) > return false; > > and then calls FLAC__bitwriter_write_raw_uint32_nocheck(). > > The new function FLAC__bitwriter_write_raw_uint32_nocheck() is > an old FLAC__bitwriter_write_raw_uint32() that doesn't do this check, > and all other functions in bitwriter.c call it if they can guarantee > that all unused bits are 0.Applied. Thanks. Erik -- ---------------------------------------------------------------------- Erik de Castro Lopo http://www.mega-nerd.com/