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);

Reply via email to