mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
lavf/segment: fix crash when failing to open segment list
This happens because segment_end() returns an error, so seg_write_packet never proceeds to segment_start(), and seg->avf->pb is never re-set, so we crash with a null pb when av_write_trailer flushes the packet queue. This doesn't seem to be clearly recoverable, so I'm just failing more gracefully. Repro: ffmpeg -i input.ts -f segment -c copy -segment_list /noaxx.m3u8 test-%05d.ts (assuming you don't have write access to /)
This commit is contained in:
parent
e371f031b9
commit
2b20290061
@ -354,6 +354,9 @@ static int segment_end(AVFormatContext *s, int write_trailer, int is_last)
|
||||
int i;
|
||||
int err;
|
||||
|
||||
if (!oc || !oc->pb)
|
||||
return AVERROR(EINVAL);
|
||||
|
||||
av_write_frame(oc, NULL); /* Flush any buffered data (fragmented mp4) */
|
||||
if (write_trailer)
|
||||
ret = av_write_trailer(oc);
|
||||
@ -850,7 +853,7 @@ static int seg_write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
int64_t usecs;
|
||||
int64_t wrapped_val;
|
||||
|
||||
if (!seg->avf)
|
||||
if (!seg->avf || !seg->avf->pb)
|
||||
return AVERROR(EINVAL);
|
||||
|
||||
calc_times:
|
||||
|
Loading…
Reference in New Issue
Block a user