X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fmicrodvddec.c;h=08e6fca09cc575b235034c91935a8a7e742f8608;hb=af9e622776c9268fd473cc23a0fd6b29f0017f64;hp=c2f1ac45cda7a029ef45c7315566ff2e514ee565;hpb=ace96d2e693d804a0ed16aebc1b1027cfff2c527;p=ffmpeg diff --git a/libavformat/microdvddec.c b/libavformat/microdvddec.c index c2f1ac45cda..08e6fca09cc 100644 --- a/libavformat/microdvddec.c +++ b/libavformat/microdvddec.c @@ -36,7 +36,7 @@ typedef struct { } MicroDVDContext; -static int microdvd_probe(AVProbeData *p) +static int microdvd_probe(const AVProbeData *p) { unsigned char c; const uint8_t *ptr = p->buf; @@ -102,6 +102,8 @@ static int microdvd_read_header(AVFormatContext *s) if (!len) break; line[strcspn(line, "\r\n")] = 0; + if (!*p) + continue; if (i++ < 3) { int frame; double fps; @@ -115,10 +117,11 @@ static int microdvd_read_header(AVFormatContext *s) continue; } if (!st->codecpar->extradata && sscanf(line, "{DEFAULT}{}%c", &c) == 1) { - st->codecpar->extradata = av_strdup(line + 11); - if (!st->codecpar->extradata) - return AVERROR(ENOMEM); - st->codecpar->extradata_size = strlen(st->codecpar->extradata) + 1; + int ret, size = strlen(line + 11); + ret = ff_alloc_extradata(st->codecpar, size); + if (ret < 0) + return ret; + memcpy(st->codecpar->extradata, line + 11, size); continue; } }