From 96c071d8240d57535073bbc77e154aed8658733b Mon Sep 17 00:00:00 2001 From: Oneric Date: Tue, 13 Oct 2020 02:55:18 +0200 Subject: Ensure track->event_format is valid before parsing In case of strdup-failure track->event_format can be assigned NULL in event_format_fallback or in process_events_line --- libass/ass.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'libass') diff --git a/libass/ass.c b/libass/ass.c index afb511c..fd1c417 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -777,6 +777,13 @@ static int process_events_line(ASS_Track *track, char *str) int eid; ASS_Event *event; + // We can't parse events without event_format + if (!track->event_format) { + event_format_fallback(track); + if (!track->event_format) + return -1; + } + str += 9; skip_spaces(&str); @@ -785,10 +792,6 @@ static int process_events_line(ASS_Track *track, char *str) return -1; event = track->events + eid; - // We can't parse events with event_format - if (!track->event_format) - event_format_fallback(track); - process_event_tail(track, event, str, 0); } else { ass_msg(track->library, MSGL_V, "Not understood: '%.30s'", str); -- cgit v1.2.3