From 660024f12e33b1e7b5df377ddf2c5ecb3609ebb7 Mon Sep 17 00:00:00 2001 From: Oneric Date: Tue, 13 Oct 2020 03:09:34 +0200 Subject: Check for strdup failures in process_event_tail strdup failures for event->Text and event->Effect are already guarded against in ass_render.c and ass_parse.c. event->Name is never used, thus also safe. At this point event_format is guaranteed to be valid, so it doesn't need to be checked. --- libass/ass.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libass/ass.c b/libass/ass.c index fd1c417..960fee1 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -338,6 +338,8 @@ static int process_event_tail(ASS_Track *track, ASS_Event *event, ASS_Event *target = event; char *format = strdup(track->event_format); + if (!format) + return -1; char *q = format; // format scanning pointer for (i = 0; i < n_ignored; ++i) { @@ -349,14 +351,14 @@ static int process_event_tail(ASS_Track *track, ASS_Event *event, if (ass_strcasecmp(tname, "Text") == 0) { char *last; event->Text = strdup(p); - if (*event->Text != 0) { + if (event->Text && *event->Text != 0) { last = event->Text + strlen(event->Text) - 1; if (last >= event->Text && *last == '\r') *last = 0; } event->Duration -= event->Start; free(format); - return 0; // "Text" is always the last + return event->Text ? 0 : -1; // "Text" is always the last } NEXT(p, token); @@ -792,7 +794,7 @@ static int process_events_line(ASS_Track *track, char *str) return -1; event = track->events + eid; - process_event_tail(track, event, str, 0); + return process_event_tail(track, event, str, 0); } else { ass_msg(track->library, MSGL_V, "Not understood: '%.30s'", str); } -- cgit v1.2.3