diff --git a/libavformat/flac_picture.c b/libavformat/flac_picture.c index 3b69654ff6..0effbf04f6 100644 --- a/libavformat/flac_picture.c +++ b/libavformat/flac_picture.c @@ -150,19 +150,18 @@ int ff_flac_parse_picture(AVFormatContext *s, uint8_t **bufp, int buf_size, data->data += bytestream2_tell(&g); data->size = len + AV_INPUT_BUFFER_PADDING_SIZE; } else { - if (!(data = av_buffer_alloc(len + AV_INPUT_BUFFER_PADDING_SIZE))) { - return AVERROR(ENOMEM); - } + if (!(data = av_buffer_alloc(len + AV_INPUT_BUFFER_PADDING_SIZE))) + return AVERROR(ENOMEM); - if (trunclen == 0) { - bytestream2_get_bufferu(&g, data->data, len); - } else { - // If truncation was detected copy all data from block and read missing bytes - // not included in the block size - bytestream2_get_bufferu(&g, data->data, left); - if (avio_read(s->pb, data->data + len - trunclen, trunclen) < trunclen) - RETURN_ERROR(AVERROR_INVALIDDATA); - } + if (trunclen == 0) { + bytestream2_get_bufferu(&g, data->data, len); + } else { + // If truncation was detected copy all data from block and + // read missing bytes not included in the block size. + bytestream2_get_bufferu(&g, data->data, left); + if (avio_read(s->pb, data->data + len - trunclen, trunclen) < trunclen) + RETURN_ERROR(AVERROR_INVALIDDATA); + } } memset(data->data + len, 0, AV_INPUT_BUFFER_PADDING_SIZE);