Package: getstream Version: 20081204-1 Severity: normal Tags: patch
If you happen to receive a DVB stream that contains a program with no PCR transmitted (PCR PID == 8191), then the calloc'ed pmt->pcrpid is left untouched (=0), but still referred to while selecting PIDs for this program's output substream. This results in the original PMT (PID 0) being included in the output, in addition to a new PMT (also PID 0) synthesized for the substream. The patch corrects the problem for me by not avoiding the pmt->pcrpid=pmt_pcr(s) assignment in the PID_MAX case. The PID_MAX elementary stream, as possibly consisting of empty placeholder packets only, is ignored while composing the output anyway. I reported the issue to the packet author in 2008-11-05, providing two different solutions (the other was initializing the pmt->pcrpid with PID_MAX right after calloc), but did not get him convinced of it being a problem. Found the bug still present in his git tree, I decided to file a bug report here. Thanks, Janusz -- System Information: Debian Release: 5.0.4 APT prefers stable APT policy: (500, 'stable') Architecture: i386 (i686) Kernel: Linux 2.6.26-2-686-bigmem (SMP w/1 CPU core) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages getstream depends on: ii libc6 2.7-18lenny4 GNU C Library: Shared libraries ii libevent1 1.3e-3 An asynchronous event notification ii libglib2.0-0 2.16.6-3 The GLib library of C routines getstream recommends no packages. getstream suggests no packages. -- no debconf information
--- getstream2-20081204/pmt.c.orig 2008-12-04 15:21:07.000000000 +0100 +++ getstream2-20081204/pmt.c 2010-06-15 23:28:52.000000000 +0200 @@ -242,8 +242,7 @@ static struct pmt_s *pmt_parse(struct pr * FIXME - Multiple section PMTs might be inconsistent * concerning the PCR pid */ - if (pmt_pcr(s) != PID_MAX) - pmt->pcrpid=pmt_pcr(s); + pmt->pcrpid=pmt_pcr(s); /* Walk PMT and add ES PIDS as necessary */ esoff=pmt_first_es(s);