From 00f6bbe99c6465991669c74ed2d6f210019ff60b Mon Sep 17 00:00:00 2001 From: jp9000 Date: Thu, 10 Aug 2017 21:21:58 -0700 Subject: [PATCH] image-source: Fix potential crash with slideshow If there are no slideshow items and this function is called, it would cause a null pointer dereference. --- plugins/image-source/obs-slideshow.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/image-source/obs-slideshow.c b/plugins/image-source/obs-slideshow.c index 7a688d63e..e805d69b6 100644 --- a/plugins/image-source/obs-slideshow.c +++ b/plugins/image-source/obs-slideshow.c @@ -220,18 +220,26 @@ static bool valid_extension(const char *ext) astrcmpi(ext, ".gif") == 0; } +static inline bool item_valid(struct slideshow *ss) +{ + return ss->files.num && ss->cur_item < ss->files.num; +} + static void do_transition(void *data, bool to_null) { struct slideshow *ss = data; + bool valid = item_valid(ss); - if (ss->use_cut) + if (valid && ss->use_cut) obs_transition_set(ss->transition, ss->files.array[ss->cur_item].source); - else if (!to_null) + + else if (valid && !to_null) obs_transition_start(ss->transition, OBS_TRANSITION_MODE_AUTO, ss->tr_speed, ss->files.array[ss->cur_item].source); + else obs_transition_start(ss->transition, OBS_TRANSITION_MODE_AUTO,