From: Jaroslav Kysela Date: Thu, 6 Aug 2015 13:09:06 +0000 (+0200) Subject: DVR: cleanup _dvr_duplicate_event, fix possible NULL dereference, fixes #3036 X-Git-Tag: v4.0.6~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fc486ea87d450e42a159f4d484a5148b6756d5ca;p=thirdparty%2Ftvheadend.git DVR: cleanup _dvr_duplicate_event, fix possible NULL dereference, fixes #3036 --- diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index 37bfeb9dc..1229b81cb 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -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: