diff --git a/apps/dvb/libdvbsi++/src/ac3_descriptor.cpp b/apps/dvb/libdvbsi++/src/ac3_descriptor.cpp index 4024ade..bdfacaf 100644 --- a/apps/dvb/libdvbsi++/src/ac3_descriptor.cpp +++ b/apps/dvb/libdvbsi++/src/ac3_descriptor.cpp @@ -31,6 +31,16 @@ Ac3Descriptor::Ac3Descriptor(const uint8_t * const buffer) : Descriptor(buffer) asvcFlag = (buffer[2] >> 4) & 0x01; size_t headerLength = 1 + ac3TypeFlag + bsidFlag + mainidFlag + asvcFlag; + + // broadcasters got it wrong again... + if (headerLength > descriptorLength) { + ac3TypeFlag = 0; + bsidFlag = 0; + mainidFlag = 0; + asvcFlag = 0; + eturn; + } + ASSERT_MIN_DLEN(headerLength); size_t i = 3;