]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
DVR: add extra channel access checks to channel_set functions
authorJaroslav Kysela <perex@perex.cz>
Mon, 11 Apr 2016 08:07:37 +0000 (10:07 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 11 Apr 2016 08:14:37 +0000 (10:14 +0200)
src/channels.c
src/dvr/dvr_autorec.c
src/dvr/dvr_db.c
src/dvr/dvr_timerec.c

index f9bd211ef6bfe4731aa33ce92d3a14c5aaf73bd4..972464b4c760c5d615bbaf8f193f62f479cdde73 100644 (file)
@@ -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)
index fdc28bfaffcc39cfb987c6e4fa3e7b4a065ba596..f0edff51febb4b8e32b2e8d1d045a84d5a99f28b 100644 (file)
@@ -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;
index 9f34e93dd3a85b8d90907e5173de420aef30d858..e4d7a15efcccc173bc6c6263206a0df5b229290a 100644 (file)
@@ -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);
index f7fa33ea4e7da904cf7cc3c546c44fcb6cdb941f..c91aa89d4abcafa18d9a5c8edc81ffbefcca7d7b 100644 (file)
@@ -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;