]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
DVR: cleanup _dvr_duplicate_event, fix possible NULL dereference, fixes #3036
authorJaroslav Kysela <perex@perex.cz>
Thu, 6 Aug 2015 13:09:06 +0000 (15:09 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 6 Aug 2015 13:09:16 +0000 (15:09 +0200)
src/dvr/dvr_db.c

index 37bfeb9dce0c6fd6f175de27b38b6bf8f2a61e40..1229b81cb93e6b866bf116794538d9a665a00ec1 100644 (file)
@@ -666,14 +666,16 @@ dvr_entry_create_by_event(const char *config_uuid,
 /**
  *
  */
-static dvr_entry_t_dvr_duplicate_event(dvr_entry_t* de)
+static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t* de)
 {
+  dvr_entry_t *de2;
+  struct tm de_start;
+  int record;
+
   if (!de->de_autorec)
     return NULL;
 
-  int record = de->de_autorec->dae_record;
-
-  struct tm de_start;
+  record = de->de_autorec->dae_record;
   localtime_r(&de->de_start, &de_start);
 
   switch (record) {
@@ -701,8 +703,6 @@ static dvr_entry_t* _dvr_duplicate_event(dvr_entry_t* de)
   if (lang_str_empty(de->de_title))
     return NULL;
 
-  dvr_entry_t *de2;
-
   LIST_FOREACH(de2, &dvrentries, de_global_link) {
     if (de == de2)
       continue;
@@ -721,7 +721,7 @@ static dvr_entry_t* _dvr_duplicate_event(dvr_entry_t* de)
 
     switch (record) {
       case DVR_AUTOREC_RECORD_DIFFERENT_EPISODE_NUMBER:
-        if (!strcmp(de->de_episode, de2->de_episode))
+        if (!strempty(de2->de_episode) && !strcmp(de->de_episode, de2->de_episode))
           return de2;
         break;
       case DVR_AUTOREC_RECORD_DIFFERENT_SUBTITLE: