cDemux::sectionFilter: fix invalid length calculation

This commit is contained in:
Stefan Seyfried
2013-02-24 13:26:55 +01:00
parent 70979f4df3
commit 74cb82e66c
4 changed files with 6 additions and 9 deletions

View File

@@ -277,13 +277,12 @@ bool cDemux::sectionFilter(unsigned short pid, const unsigned char * const filte
const unsigned char * const mask, int len, int timeout,
const unsigned char * const negmask)
{
int length = len;
memset(&s_flt, 0, sizeof(s_flt));
if (len > DMX_FILTER_SIZE)
{
lt_info("%s #%d: len too long: %d, DMX_FILTER_SIZE %d\n", __func__, num, len, DMX_FILTER_SIZE);
length = DMX_FILTER_SIZE;
len = DMX_FILTER_SIZE;
}
s_flt.pid = pid;
s_flt.timeout = timeout;

View File

@@ -247,13 +247,12 @@ bool cDemux::sectionFilter(unsigned short pid, const unsigned char * const filte
const unsigned char * const mask, int len, int timeout,
const unsigned char * const negmask)
{
int length = len;
memset(&s_flt, 0, sizeof(s_flt));
if (len > DMX_FILTER_SIZE)
{
lt_info("%s #%d: len too long: %d, DMX_FILTER_SIZE %d\n", __func__, num, len, DMX_FILTER_SIZE);
length = DMX_FILTER_SIZE;
len = DMX_FILTER_SIZE;
}
s_flt.pid = pid;
s_flt.timeout = timeout;

View File

@@ -357,7 +357,6 @@ bool cDemux::sectionFilter(unsigned short pid, const unsigned char * const filte
const unsigned char * const mask, int len, int timeout,
const unsigned char * const negmask)
{
int length = len;
memset(&s_flt, 0, sizeof(s_flt));
_open();
@@ -365,7 +364,7 @@ bool cDemux::sectionFilter(unsigned short pid, const unsigned char * const filte
if (len > DMX_FILTER_SIZE)
{
lt_info("%s #%d: len too long: %d, DMX_FILTER_SIZE %d\n", __func__, num, len, DMX_FILTER_SIZE);
length = DMX_FILTER_SIZE;
len = DMX_FILTER_SIZE;
}
s_flt.pid = pid;
s_flt.timeout = timeout;

View File

@@ -349,12 +349,12 @@ bool cDemux::sectionFilter(unsigned short pid, const unsigned char * const filte
s_flt.filter[0] = filter[0];
s_flt.mask[0] = mask[0];
s_flt.timeout = timeout;
memcpy(&s_flt.filter[3], &filter[1], len - 1);
memcpy(&s_flt.mask[3], &mask[1], len - 1);
memcpy(&s_flt.filter[3], &filter[1], length - 1);
memcpy(&s_flt.mask[3], &mask[1], length - 1);
if (negmask != NULL)
{
s_flt.positive[0] = negmask[0];
memcpy(&s_flt.positive[3], &negmask[1], len - 1);
memcpy(&s_flt.positive[3], &negmask[1], length - 1);
}
s_flt.flags = XPDF_IMMEDIATE_START;