On 19.01.2009 11:06, Frank Schmirler wrote:
Hi,
On Mon, 19 Jan 2009 10:44:18 +0100, Alexw wrote
I have noticed a PMT parsing issue with VDR version 1.7.x. The bug is still present in version 1.7.3 but the behaviour is worst because it segfaults.
First I found out that 2 lines where added in the ParsePmt method.
Data += Data[0] + 1; // this is the first packet Length -= Data[0] + 1;
At the moment I don't know exactly what is the meaning of this 2 operations.
These lines are for handling the SI pointer field. Data[0] is the pointer field, which contains the byte offset to the actual data (usually 0). "+ 1" for the pointer field itself.
The order of the two statements need to be reversed. First fix the length, then the data pointer:
Length -= Data[0] + 1; Data += Data[0] + 1;
Mea culpa! It was correct in Frank's original patch, but for some silly reason I swapped these two lines when adopting the patch. Sorry about that...
Will fix it in 1.7.4.
Klaus