]> git.sesse.net Git - ffmpeg/commitdiff
avformat/argo_{asf,brp}: fix potential segfault in ff_argo_asf_fill_stream()
authorZane van Iperen <zane@zanevaniperen.com>
Fri, 25 Sep 2020 13:03:46 +0000 (23:03 +1000)
committerZane van Iperen <zane@zanevaniperen.com>
Sat, 26 Sep 2020 23:11:29 +0000 (09:11 +1000)
Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
libavformat/argo_asf.c
libavformat/argo_asf.h
libavformat/argo_brp.c

index de941caeac16150d318e2f590447fca40737ce8b..8e2bf21c7187a3303f12a10d276f7baafddad18c 100644 (file)
@@ -75,17 +75,17 @@ void ff_argo_asf_parse_chunk_header(ArgoASFChunkHeader *hdr, const uint8_t *buf)
     hdr->flags          = AV_RL32(buf + 16);
 }
 
-int ff_argo_asf_fill_stream(AVStream *st, const ArgoASFFileHeader *fhdr,
+int ff_argo_asf_fill_stream(AVFormatContext *s, AVStream *st, const ArgoASFFileHeader *fhdr,
                             const ArgoASFChunkHeader *ckhdr)
 {
     if (ckhdr->num_samples != ASF_SAMPLE_COUNT) {
-        av_log(st, AV_LOG_ERROR, "Invalid sample count. Got %u, expected %d\n",
+        av_log(s, AV_LOG_ERROR, "Invalid sample count. Got %u, expected %d\n",
                ckhdr->num_samples, ASF_SAMPLE_COUNT);
         return AVERROR_INVALIDDATA;
     }
 
     if ((ckhdr->flags & ASF_CF_ALWAYS1) != ASF_CF_ALWAYS1 || (ckhdr->flags & ASF_CF_ALWAYS0) != 0) {
-        avpriv_request_sample(st, "Nonstandard flags (0x%08X)", ckhdr->flags);
+        avpriv_request_sample(s, "Nonstandard flags (0x%08X)", ckhdr->flags);
         return AVERROR_PATCHWELCOME;
     }
 
@@ -116,7 +116,7 @@ int ff_argo_asf_fill_stream(AVStream *st, const ArgoASFFileHeader *fhdr,
 
     if (st->codecpar->bits_per_raw_sample != 16) {
         /* The header allows for these, but I've never seen any files with them. */
-        avpriv_request_sample(st, "Non 16-bit samples");
+        avpriv_request_sample(s, "Non 16-bit samples");
         return AVERROR_PATCHWELCOME;
     }
 
@@ -212,7 +212,7 @@ static int argo_asf_read_header(AVFormatContext *s)
 
     ff_argo_asf_parse_chunk_header(&asf->ckhdr, buf);
 
-    return ff_argo_asf_fill_stream(st, &asf->fhdr, &asf->ckhdr);
+    return ff_argo_asf_fill_stream(s, st, &asf->fhdr, &asf->ckhdr);
 }
 
 static int argo_asf_read_packet(AVFormatContext *s, AVPacket *pkt)
index eb2669a63fcdb815af215da612f5e701d04b5a8f..e65125fb79d77ab9ae09a0f474c012fbfd790fdf 100644 (file)
@@ -65,7 +65,7 @@ enum {
 void ff_argo_asf_parse_file_header(ArgoASFFileHeader *hdr, const uint8_t *buf);
 int  ff_argo_asf_validate_file_header(AVFormatContext *s, const ArgoASFFileHeader *hdr);
 void ff_argo_asf_parse_chunk_header(ArgoASFChunkHeader *hdr, const uint8_t *buf);
-int  ff_argo_asf_fill_stream(AVStream *st, const ArgoASFFileHeader *fhdr,
+int  ff_argo_asf_fill_stream(AVFormatContext *s, AVStream *st, const ArgoASFFileHeader *fhdr,
                              const ArgoASFChunkHeader *ckhdr);
 
 #endif /* AVFORMAT_ARGO_ASF_H */
index c41781863900485d0421f22257a963fe1fb32def..a60de59f64b230f8513ff5490144ed33dc7e68b4 100644 (file)
@@ -289,7 +289,7 @@ static int argo_brp_read_header(AVFormatContext *s)
 
         ff_argo_asf_parse_chunk_header(&brp->basf.ckhdr, buf);
 
-        if ((ret = ff_argo_asf_fill_stream(st, &hdr->extradata.basf, &brp->basf.ckhdr)) < 0)
+        if ((ret = ff_argo_asf_fill_stream(s, st, &hdr->extradata.basf, &brp->basf.ckhdr)) < 0)
             return ret;
 
         /* Convert ms to samples. */