From: Jaroslav Kysela Date: Sun, 2 Dec 2018 16:47:24 +0000 (+0100) Subject: pass muxer: fix pass_muxer_nit_cb() - wrong private tag copy X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e67c795b7b6e5fe1e5ace5fc7b84fdab960fa206;p=thirdparty%2Ftvheadend.git pass muxer: fix pass_muxer_nit_cb() - wrong private tag copy --- diff --git a/src/muxer/muxer_pass.c b/src/muxer/muxer_pass.c index d376e2d5d..8b3bba973 100644 --- a/src/muxer/muxer_pass.c +++ b/src/muxer/muxer_pass.c @@ -282,7 +282,7 @@ pass_muxer_nit_cb(mpegts_psi_table_t *mt, const uint8_t *buf, int len) tvherror(LS_PASS, "NIT entry too long (%i)", ol); return; } - memcpy(out, buf, dlen + 2); + memcpy(out + ol, buf, dlen + 2); ol += dlen + 2; } dlen += 2; @@ -292,7 +292,7 @@ pass_muxer_nit_cb(mpegts_psi_table_t *mt, const uint8_t *buf, int len) } out[8] &= 0xf0; out[8] |= ((ol - 10) >> 8) & 0x0f; - out[9] = ol - 10; + out[9] = (ol - 10) & 0xff; if (sizeof(out) - 32 < ol) { tvherror(LS_PASS, "NIT entry too long (%i)", ol); @@ -301,8 +301,7 @@ pass_muxer_nit_cb(mpegts_psi_table_t *mt, const uint8_t *buf, int len) /* mux info length */ lptr = ol; - out[ol++] = 0xf0; - out[ol++] = 0x00; + ol += 2; /* mux info */ out[ol++] = pm->pm_dst_tsid >> 8; @@ -317,8 +316,9 @@ pass_muxer_nit_cb(mpegts_psi_table_t *mt, const uint8_t *buf, int len) out[ol++] = pm->pm_dst_sid >> 8; out[ol++] = pm->pm_dst_sid; out[ol++] = 0x11; - out[lptr] = (ol - lptr - 2) >> 8; - out[lptr+1] = ol - lptr - 2; + /* update section length */ + out[lptr+0] = 0xf0 | (ol - lptr - 2) >> 8; + out[lptr+1] = (ol - lptr - 2) & 0xff; /* update section length */ out[1] = (out[1] & 0xf0) | ((ol + 4 - 3) >> 8);