Fixed a crash in the SVDRP command CLRE in case a non-existing channel number is given

This commit is contained in:
Klaus Schmidinger 2021-01-01 21:23:00 +01:00
parent 40ca081ff4
commit 3f3e47d280
3 changed files with 9 additions and 3 deletions

View File

@ -2938,6 +2938,8 @@ Manuel Reimer <Manuel.Reimer@gmx.de>
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 <rene@vandenbraken.name>
for reporting a bug in writing the PCR pid into the PMT in

View File

@ -9575,3 +9575,5 @@ Video Disk Recorder Revision History
- Somewhere down the road the 'x' bit of Doxyfile.filter got lost, so the
Makefile now makes sure it is set before calling doxygen.
- Using strgetlast() in more places.
- Fixed a crash in the SVDRP command CLRE in case a non-existing channel number is
given (reported by Manuel Reimer).

View File

@ -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 5.1 2020/12/26 15:49:01 kls Exp $
* $Id: svdrp.c 5.2 2021/01/01 21:23:00 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);