From 5f1e08f606d3e2b136edb8e1a241f674e03deedc Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 2 Jan 2021 15:18:06 +0100 Subject: [PATCH] Fixed a crash in the SVDRP command CLRE in case a non-existing channel number is given --- CONTRIBUTORS | 2 ++ HISTORY | 2 ++ svdrp.c | 8 +++++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 5e776738..b983bf74 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2938,6 +2938,8 @@ Manuel Reimer for reporting a bug in moving channels between number groups in SVDRP's MOVC command for fixing compatibility with current versions of glibc for suggesting to make the SVDRP command DELC accept a channel id + for reporting a crash in the SVDRP command CLRE in case a non-existing channel + number is given Rene van den Braken for reporting a bug in writing the PCR pid into the PMT in diff --git a/HISTORY b/HISTORY index 32edcc8b..089f95ca 100644 --- a/HISTORY +++ b/HISTORY @@ -9568,3 +9568,5 @@ Video Disk Recorder Revision History - Fixed strreplace() to handle NULL strings (reported by Jürgen Schneider). - Somewhere down the road the 'x' bit of Doxyfile.filter got lost, so the Makefile now makes sure it is set before calling doxygen. +- Fixed a crash in the SVDRP command CLRE in case a non-existing channel number is + given (reported by Manuel Reimer). diff --git a/svdrp.c b/svdrp.c index 38bd8bb1..767fc6f3 100644 --- a/svdrp.c +++ b/svdrp.c @@ -10,7 +10,7 @@ * and interact with the Video Disk Recorder - or write a full featured * graphical interface that sits on top of an SVDRP connection. * - * $Id: svdrp.c 4.43 2020/06/22 20:59:49 kls Exp $ + * $Id: svdrp.c 4.43.1.1 2021/01/02 15:18:06 kls Exp $ */ #include "svdrp.h" @@ -1301,8 +1301,10 @@ void cSVDRPServer::CmdCLRE(const char *Option) tChannelID ChannelID = tChannelID::InvalidID; if (isnumber(Option)) { int o = strtol(Option, NULL, 10); - if (o >= 1 && o <= cChannels::MaxNumber()) - ChannelID = Channels->GetByNumber(o)->GetChannelID(); + if (o >= 1 && o <= cChannels::MaxNumber()) { + if (const cChannel *Channel = Channels->GetByNumber(o)) + ChannelID = Channel->GetChannelID(); + } } else { ChannelID = tChannelID::FromString(Option);