X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fcdxl.c;h=31f7cb823a89e5d153e7b7d5efe7c6071680a353;hb=ae436cc5e4d75c1a7deefb2b30820486e2f3d8af;hp=94a063c81311b09fd8b6e94ec7f5ed69685724d4;hpb=34a0a9746b2f441db7c45983838a88aa87a33834;p=ffmpeg diff --git a/libavformat/cdxl.c b/libavformat/cdxl.c index 94a063c8131..31f7cb823a8 100644 --- a/libavformat/cdxl.c +++ b/libavformat/cdxl.c @@ -40,7 +40,7 @@ typedef struct CDXLDemuxContext { int64_t filesize; } CDXLDemuxContext; -static int cdxl_read_probe(AVProbeData *p) +static int cdxl_read_probe(const AVProbeData *p) { int score = AVPROBE_SCORE_EXTENSION + 10; @@ -131,7 +131,8 @@ static int cdxl_read_packet(AVFormatContext *s, AVPacket *pkt) height = AV_RB16(&cdxl->header[16]); palette_size = AV_RB16(&cdxl->header[20]); audio_size = AV_RB16(&cdxl->header[22]); - if (FFALIGN(width, 16) * (uint64_t)height * cdxl->header[19] > INT_MAX) + if (cdxl->header[19] == 0 || + FFALIGN(width, 16) * (uint64_t)height * cdxl->header[19] > INT_MAX) return AVERROR_INVALIDDATA; if (format == 0x20) image_size = width * height * cdxl->header[19] / 8; @@ -201,8 +202,8 @@ static int cdxl_read_packet(AVFormatContext *s, AVPacket *pkt) avpriv_set_pts_info(st, 64, 1, cdxl->sample_rate); } - if (av_new_packet(pkt, video_size + CDXL_HEADER_SIZE) < 0) - return AVERROR(ENOMEM); + if ((ret = av_new_packet(pkt, video_size + CDXL_HEADER_SIZE)) < 0) + return ret; memcpy(pkt->data, cdxl->header, CDXL_HEADER_SIZE); ret = avio_read(pb, pkt->data + CDXL_HEADER_SIZE, video_size); if (ret < 0) {