From: Jaroslav Kysela Date: Mon, 11 Apr 2016 08:07:37 +0000 (+0200) Subject: DVR: add extra channel access checks to channel_set functions X-Git-Tag: v4.2.1~684 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=57f8bca70bfd6cb4b69369d19a5386d914fa0510;p=thirdparty%2Ftvheadend.git DVR: add extra channel access checks to channel_set functions --- diff --git a/src/channels.c b/src/channels.c index f9bd211ef..972464b4c 100644 --- a/src/channels.c +++ b/src/channels.c @@ -596,7 +596,7 @@ channel_access(channel_t *ch, access_t *a, int disabled) { char ubuf[UUID_HEX_SIZE]; - if (!ch) + if (!ch || !a) return 0; if (!disabled && !ch->ch_enabled) diff --git a/src/dvr/dvr_autorec.c b/src/dvr/dvr_autorec.c index fdc28bfaf..f0edff51f 100644 --- a/src/dvr/dvr_autorec.c +++ b/src/dvr/dvr_autorec.c @@ -483,6 +483,8 @@ dvr_autorec_entry_class_channel_set(void *o, const void *v) return 1; } } else if (dae->dae_channel != ch) { + if (!channel_access(ch, dae->dae_id.in_access, 1)) + return 0; if (dae->dae_channel) LIST_REMOVE(dae, dae_channel_link); dae->dae_channel = ch; diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index 9f34e93dd..e4d7a15ef 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -2271,6 +2271,8 @@ dvr_entry_class_channel_set(void *o, const void *v) return 1; } } else if (de->de_channel != ch) { + if (!channel_access(ch, de->de_id.in_access, 1)) + return 0; if (de->de_channel) LIST_REMOVE(de, de_channel_link); free(de->de_channel_name); diff --git a/src/dvr/dvr_timerec.c b/src/dvr/dvr_timerec.c index f7fa33ea4..c91aa89d4 100644 --- a/src/dvr/dvr_timerec.c +++ b/src/dvr/dvr_timerec.c @@ -327,6 +327,8 @@ dvr_timerec_entry_class_channel_set(void *o, const void *v) return 1; } } else if (dte->dte_channel != ch) { + if (!channel_access(ch, dte->dte_id.in_access, 1)) + return 0; if (dte->dte_channel) LIST_REMOVE(dte, dte_channel_link); dte->dte_channel = ch;