diff --git a/lib/src/ca.c b/lib/src/ca.c index d457773..f86e66f 100644 --- a/lib/src/ca.c +++ b/lib/src/ca.c @@ -240,9 +240,10 @@ static int set_pmts(struct dddvb_ca *ca, uint8_t **pmts) if (pmts[i]) num++; for (i = 0; i < num; i++) { - memcpy(sec, pmts[i], 4096); + memcpy(sec, pmts[i], 3); len = ((sec[1] & 0x0f) << 8) | sec[2]; len += 3; + memcpy(sec, pmts[i], len); section = section_codec(sec, len); section_ext = section_ext_decode(section, 0); pmt = mpeg_pmt_section_codec(section_ext);