Browse Source

avcodec/cuviddec: avoid copy of uninitialized extradata pointer

tags/n4.4
Timo Rothenpieler 4 years ago
parent
commit
13c74291ec
1 changed files with 5 additions and 4 deletions
  1. +5
    -4
      libavcodec/cuviddec.c

+ 5
- 4
libavcodec/cuviddec.c View File

@@ -795,7 +795,7 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx)
CUcontext cuda_ctx = NULL;
CUcontext dummy;
uint8_t *extradata;
ssize_t extradata_size;
int extradata_size;
int ret = 0;

enum AVPixelFormat pix_fmts[3] = { AV_PIX_FMT_CUDA,
@@ -949,20 +949,21 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx)
const AVCodecParameters *par = avctx->internal->bsf->par_out;
extradata = par->extradata;
extradata_size = par->extradata_size;
} else if (avctx->extradata_size > 0) {
} else {
extradata = avctx->extradata;
extradata_size = avctx->extradata_size;
}

ctx->cuparse_ext = av_mallocz(sizeof(*ctx->cuparse_ext)
+ FFMAX(extradata_size - (ssize_t)sizeof(ctx->cuparse_ext->raw_seqhdr_data), 0));
+ FFMAX(extradata_size - (int)sizeof(ctx->cuparse_ext->raw_seqhdr_data), 0));
if (!ctx->cuparse_ext) {
ret = AVERROR(ENOMEM);
goto error;
}

if (extradata_size > 0)
memcpy(ctx->cuparse_ext->raw_seqhdr_data, extradata, extradata_size);
ctx->cuparse_ext->format.seqhdr_data_length = extradata_size;
memcpy(ctx->cuparse_ext->raw_seqhdr_data, extradata, extradata_size);

ctx->cuparseinfo.pExtVideoInfo = ctx->cuparse_ext;



Loading…
Cancel
Save