I tracked down a small problem in the dxr3pesframes code which was
causing a segv to occur while trying to play some corrupted streams.
dxr3pesframe.c contains the following loop which is used to find the
start of the first pes header:
for (; pos + 9 < length && !IsPesHeader(pesArray.SubArray(pos, 4));
pos++);
With corrupted streams loop may reach the end of the buffer without
finding a valid header and the subsequent code tries to decode the bogus
header data often causing a segv. The patch detects this condition and
causes the bad data to be dropped.
Jon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dxr3-corrupt-pes2.patch
Type: text/x-patch
Size: 453 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/vdr/attachments/20050430/b07a947e/dxr3-corrupt-pes2.bin