diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c index 265e6ec845..f0e3eacdf1 100644 --- a/libavformat/webm_chunk.c +++ b/libavformat/webm_chunk.c @@ -90,10 +90,15 @@ static int get_chunk_filename(AVFormatContext *s, int is_header, char *filename) return AVERROR(EINVAL); } if (is_header) { + int len; if (!wc->header_filename) { return AVERROR(EINVAL); } - av_strlcpy(filename, wc->header_filename, MAX_FILENAME_SIZE); + len = av_strlcpy(filename, wc->header_filename, MAX_FILENAME_SIZE); + if (len >= MAX_FILENAME_SIZE) { + av_log(oc, AV_LOG_ERROR, "Header filename too long\n"); + return AVERROR(EINVAL); + } } else { if (av_get_frame_filename(filename, MAX_FILENAME_SIZE, s->filename, wc->chunk_index - 1) < 0) {