cDemux::sectionFilter: fix invalid length calculation

Origin commit data
------------------
Branch: master
Commit: 74cb82e66c
Author: Stefan Seyfried <seife@tuxbox-git.slipkontur.de>
Date: 2013-02-24 (Sun, 24 Feb 2013)


------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
Stefan Seyfried
2013-02-24 13:26:55 +01:00
parent d52e04209a
commit 5334728ac9
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 mask, int len, int timeout,
const unsigned char * const negmask) const unsigned char * const negmask)
{ {
int length = len;
memset(&s_flt, 0, sizeof(s_flt)); memset(&s_flt, 0, sizeof(s_flt));
if (len > DMX_FILTER_SIZE) if (len > DMX_FILTER_SIZE)
{ {
lt_info("%s #%d: len too long: %d, DMX_FILTER_SIZE %d\n", __func__, num, 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.pid = pid;
s_flt.timeout = timeout; 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 mask, int len, int timeout,
const unsigned char * const negmask) const unsigned char * const negmask)
{ {
int length = len;
memset(&s_flt, 0, sizeof(s_flt)); memset(&s_flt, 0, sizeof(s_flt));
if (len > DMX_FILTER_SIZE) if (len > DMX_FILTER_SIZE)
{ {
lt_info("%s #%d: len too long: %d, DMX_FILTER_SIZE %d\n", __func__, num, 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.pid = pid;
s_flt.timeout = timeout; 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 mask, int len, int timeout,
const unsigned char * const negmask) const unsigned char * const negmask)
{ {
int length = len;
memset(&s_flt, 0, sizeof(s_flt)); memset(&s_flt, 0, sizeof(s_flt));
_open(); _open();
@@ -365,7 +364,7 @@ bool cDemux::sectionFilter(unsigned short pid, const unsigned char * const filte
if (len > DMX_FILTER_SIZE) if (len > DMX_FILTER_SIZE)
{ {
lt_info("%s #%d: len too long: %d, DMX_FILTER_SIZE %d\n", __func__, num, 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.pid = pid;
s_flt.timeout = timeout; 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.filter[0] = filter[0];
s_flt.mask[0] = mask[0]; s_flt.mask[0] = mask[0];
s_flt.timeout = timeout; s_flt.timeout = timeout;
memcpy(&s_flt.filter[3], &filter[1], len - 1); memcpy(&s_flt.filter[3], &filter[1], length - 1);
memcpy(&s_flt.mask[3], &mask[1], len - 1); memcpy(&s_flt.mask[3], &mask[1], length - 1);
if (negmask != NULL) if (negmask != NULL)
{ {
s_flt.positive[0] = negmask[0]; 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; s_flt.flags = XPDF_IMMEDIATE_START;