diff --git a/tools/ismindex.c b/tools/ismindex.c index 89b33e51ba..ad1f3a848c 100644 --- a/tools/ismindex.c +++ b/tools/ismindex.c @@ -300,10 +300,21 @@ static int handle_file(struct Tracks *tracks, const char *file, int split) tracks->duration = ctx->duration; for (i = 0; i < ctx->nb_streams; i++) { + struct Track **temp; AVStream *st = ctx->streams[i]; track = av_mallocz(sizeof(*track)); - tracks->tracks = av_realloc(tracks->tracks, - sizeof(*tracks->tracks) * (tracks->nb_tracks + 1)); + if (!track) { + err = AVERROR(ENOMEM); + goto fail; + } + temp = av_realloc(tracks->tracks, + sizeof(*tracks->tracks) * (tracks->nb_tracks + 1)); + if (!temp) { + av_free(track); + err = AVERROR(ENOMEM); + goto fail; + } + tracks->tracks = temp; tracks->tracks[tracks->nb_tracks] = track; track->name = file;