Ignore:
Timestamp:
04/16/07 19:37:04 (18 years ago)
Author:
r2d
Message:

Improved decoding robustness

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libmpc/branches/r2d/libmpcdec/mpc_demux.c

    r267 r268  
    301301                mpc_demux_fill(d, 11, 0); // max header block size
    302302                size = mpc_bits_get_block(&d->bits_reader, &b);
    303                 // FIXME : stop scan if invalid key
    304303                while( memcmp(b.key, "AP", 2) != 0 ){ // scan all blocks until audio
     304                        if (b.key[0] < 65 || b.key[0] > 90 || b.key[1] < 65 || b.key[1] > 90)
     305                                return MPC_STATUS_INVALIDSV;
     306                        if (b.size > (mpc_uint64_t) DEMUX_BUFFER_SIZE - 11)
     307                                return MPC_STATUS_INVALIDSV;
    305308                        mpc_demux_fill(d, 11 + (mpc_uint32_t) b.size, 0);
    306309                        if (memcmp(b.key, "SH", 2) == 0){
     
    319322                }
    320323                d->bits_reader.buff -= size;
    321                 if (d->si.stream_version == 0) // si no initialized !!!
     324                if (d->si.stream_version == 0) // si not initialized !!!
    322325                        return MPC_STATUS_INVALIDSV;
    323326        } else
Note: See TracChangeset for help on using the changeset viewer.