From: Jaroslav Kysela Date: Wed, 27 May 2015 08:30:45 +0000 (+0200) Subject: mpegts: mpegts_table_dispatch() handle MT_CRC correctly, fixes #2897 X-Git-Tag: v4.2.1~2453 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5f23b3e1bd61ac35efdd22a7ea66292474c03d9;p=thirdparty%2Ftvheadend.git mpegts: mpegts_table_dispatch() handle MT_CRC correctly, fixes #2897 --- diff --git a/src/input/mpegts/mpegts_table.c b/src/input/mpegts/mpegts_table.c index 41218a1e6..ef3382c5b 100644 --- a/src/input/mpegts/mpegts_table.c +++ b/src/input/mpegts/mpegts_table.c @@ -82,26 +82,28 @@ void mpegts_table_dispatch ( const uint8_t *sec, size_t r, void *aux ) { - int tid, len, ret; + int tid, len, crc_len, ret; mpegts_table_t *mt = aux; if(mt->mt_destroyed) return; tid = sec[0]; - len = ((sec[1] & 0x0f) << 8) | sec[2]; /* Check table mask */ if((tid & mt->mt_mask) != mt->mt_table) return; + len = ((sec[1] & 0x0f) << 8) | sec[2]; + crc_len = (mt->mt_flags & MT_CRC) ? 4 : 0; + /* Pass with tableid / len in data */ if (mt->mt_flags & MT_FULL) - ret = mt->mt_callback(mt, sec, len+3, tid); + ret = mt->mt_callback(mt, sec, len+3-crc_len, tid); /* Pass w/out tableid/len in data */ else - ret = mt->mt_callback(mt, sec+3, len, tid); + ret = mt->mt_callback(mt, sec+3, len-crc_len, tid); /* Good */ if(ret >= 0)