[Flac-dev] [Flac] Ogg Codecs 0.80.15035

Cristian Adam cristian.adam at gmx.net
Sat Jun 14 08:58:18 PDT 2008


Cristian Adam wrote:
> Hi all,
>
> I've made a test release for Ogg DirectShow Codecs.
> You can find it here: 
> http://www.xiph.org/dshow/uploads/Main/oggcodecs_0.80.15035.exe
>
> The problem is that I get a HEAP Corruption detected at:
>
> void FLAC__bitreader_free(FLAC__BitReader *br)
> {
>     FLAC__ASSERT(0 != br);
>
>     if(0 != br->buffer)
>         free(br->buffer);
>
>
> The call stack is:
>
> >    libFLAC.dll!FLAC__bitreader_free(FLAC__BitReader * 
> br=0x035280c0)  Line 348 + 0xe bytes    C
>      libFLAC.dll!FLAC__stream_decoder_finish(FLAC__StreamDecoder * 
> decoder=0x035265f0)  Line 685 + 0xf bytes    C
>      libFLAC++.dll!FLAC::Decoder::Stream::~Stream()  Line 56 + 0xf 
> bytes    C++
>      
> dsfNativeFLACSource.dll!NativeFLACSourceFilter::~NativeFLACSourceFilter()  
> Line 83 + 0x4d bytes    C++
>
>
> I've updated the FLAC source code from 1.1.0 to 1.2.1, with an older 
> package (oggcodecs_0.73.1936.exe),
> but I want to deliver the new FLAC.
>
> Any pointers?
Because the HEAP Corruption was only 8 bytes. So I've thought of giving 
more memory:

FLAC__bool FLAC__bitreader_init(FLAC__BitReader *br, FLAC__CPUInfo cpu, 
FLAC__BitReaderReadCallback rcb, void *cd)
{
    FLAC__ASSERT(0 != br);

    br->words = br->bytes = 0;
    br->consumed_words = br->consumed_bits = 0;
    br->capacity = FLAC__BITREADER_DEFAULT_CAPACITY;
   
    br->buffer = (brword*)malloc(sizeof(brword) * (br->capacity + 2));

I remember seeing things like br->words = 2049 and br->capacity = 2048. 
This hack fixes the crashes,
the updated setup file is here: 
http://www.xiph.org/dshow/uploads/Main/oggcodecs_0.80.15039.exe

Cheers,
Cristian.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/flac-dev/attachments/20080614/59bd2bc8/attachment.htm 


More information about the Flac-dev mailing list