1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed a possible NULL pointer access in cEITScanner::Process()

This commit is contained in:
Klaus Schmidinger 2004-01-10 16:52:01 +01:00
parent 0a62be0274
commit 43ca916c20
3 changed files with 16 additions and 11 deletions

View File

@ -586,6 +586,7 @@ Andreas Kool <akool@akool.de>
for reporting a problem with empty values in setup.conf for reporting a problem with empty values in setup.conf
for fixing detecting the /dev/videoN devices for GRAB in case there are others for fixing detecting the /dev/videoN devices for GRAB in case there are others
before the DVB devices before the DVB devices
for fixing a possible NULL pointer access in cEITScanner::Process()
Guy Roussin <guy.roussin@teledetection.fr> Guy Roussin <guy.roussin@teledetection.fr>
for suggesting not to display channel group delimiters without text for suggesting not to display channel group delimiters without text

View File

@ -2564,3 +2564,5 @@ Video Disk Recorder Revision History
to Marcel Wiesweg). to Marcel Wiesweg).
- In case of incomplete sections an error message is now logged only every 10 - In case of incomplete sections an error message is now logged only every 10
seconds. seconds.
- Fixed a possible NULL pointer access in cEITScanner::Process() (thanks to
Andreas Kool).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: eitscan.c 1.16 2004/01/05 09:51:25 kls Exp $ * $Id: eitscan.c 1.17 2004/01/10 16:50:51 kls Exp $
*/ */
#include "eitscan.h" #include "eitscan.h"
@ -116,16 +116,18 @@ void cEITScanner::Process(void)
if (Device != cDevice::PrimaryDevice() || (cDevice::NumDevices() == 1 && Setup.EPGScanTimeout && now - lastActivity > Setup.EPGScanTimeout * 3600)) { if (Device != cDevice::PrimaryDevice() || (cDevice::NumDevices() == 1 && Setup.EPGScanTimeout && now - lastActivity > Setup.EPGScanTimeout * 3600)) {
if (!(Device->Receiving(true) || Device->Replaying())) { if (!(Device->Receiving(true) || Device->Replaying())) {
cChannel *Channel = ScanData->GetChannel(); cChannel *Channel = ScanData->GetChannel();
//XXX if (Device->ProvidesTransponder(Channel)) { if (Channel) {
if ((!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= 0x0100) && Device->ProvidesTransponder(Channel)) { //XXX temporary for the 'sky' plugin //XXX if (Device->ProvidesTransponder(Channel)) {
if (Device == cDevice::PrimaryDevice() && !currentChannel) if ((!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= 0x0100) && Device->ProvidesTransponder(Channel)) { //XXX temporary for the 'sky' plugin
currentChannel = Device->CurrentChannel(); if (Device == cDevice::PrimaryDevice() && !currentChannel)
currentDevice = Device;//XXX see also dvbdevice.c!!! currentChannel = Device->CurrentChannel();
Device->SwitchChannel(Channel, false); currentDevice = Device;//XXX see also dvbdevice.c!!!
currentDevice = NULL; Device->SwitchChannel(Channel, false);
scanList->Del(ScanData); currentDevice = NULL;
ScanData = NULL; scanList->Del(ScanData);
AnyDeviceSwitched = true; ScanData = NULL;
AnyDeviceSwitched = true;
}
} }
} }
} }