]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
linuxdvb ca: set proper pmt message length for CAM (fix for the mpegts table code...
authorJaroslav Kysela <perex@perex.cz>
Sat, 30 May 2015 20:04:57 +0000 (22:04 +0200)
committerJaroslav Kysela <perex@perex.cz>
Sat, 30 May 2015 20:04:57 +0000 (22:04 +0200)
src/descrambler/dvbcam.c
src/input/mpegts/dvb_psi.c

index 360e87c58c5ac9a80df4e16681e74dba7322971f..273997b77b773d587bd1767cde7b685942b08376 100644 (file)
@@ -141,9 +141,9 @@ dvbcam_pmt_data(mpegts_service_t *s, const uint8_t *ptr, int len)
     is_update = 1;
   }
 
-  as->last_pmt = malloc(len + 3);
-  memcpy(as->last_pmt, ptr-3, len + 3);
-  as->last_pmt_len = len + 3;
+  as->last_pmt = malloc(len);
+  memcpy(as->last_pmt, ptr, len);
+  as->last_pmt_len = len;
 
   /*if this is update just send updated CAPMT to CAM */
   if (is_update) {
index b2ff96cbf7a1f5f0c56e7b5c4516489103f6d07b..bb3bf94b4ce4fb167f5ea03f8e20f6d74a453853 100644 (file)
@@ -986,7 +986,8 @@ dvb_pmt_callback
     service_restart((service_t*)s);
 
 #if ENABLE_LINUXDVB_CA
-  dvbcam_pmt_data(s, ptr, len);
+  /* DVBCAM requires full pmt data including header and crc */
+  dvbcam_pmt_data(s, ptr - 3, len + 3 + 4);
 #endif
 
   /* Finish */