[FFmpeg-cvslog] avformat/argo_{asf,brp}: fix potential segfault in ff_argo_asf_fill_stream()

Zane van Iperen git at videolan.org
Sun Sep 27 02:15:00 EEST 2020


ffmpeg | branch: master | Zane van Iperen <zane at zanevaniperen.com> | Fri Sep 25 23:03:46 2020 +1000| [ebfed56858d5fc57f0b4bad7e08e9e89258702ba] | committer: Zane van Iperen

avformat/argo_{asf,brp}: fix potential segfault in ff_argo_asf_fill_stream()

Signed-off-by: Zane van Iperen <zane at zanevaniperen.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ebfed56858d5fc57f0b4bad7e08e9e89258702ba
---

 libavformat/argo_asf.c | 10 +++++-----
 libavformat/argo_asf.h |  2 +-
 libavformat/argo_brp.c |  2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c
index de941caeac..8e2bf21c71 100644
--- a/libavformat/argo_asf.c
+++ b/libavformat/argo_asf.c
@@ -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)
diff --git a/libavformat/argo_asf.h b/libavformat/argo_asf.h
index eb2669a63f..e65125fb79 100644
--- a/libavformat/argo_asf.h
+++ b/libavformat/argo_asf.h
@@ -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 */
diff --git a/libavformat/argo_brp.c b/libavformat/argo_brp.c
index c417818639..a60de59f64 100644
--- a/libavformat/argo_brp.c
+++ b/libavformat/argo_brp.c
@@ -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. */



More information about the ffmpeg-cvslog mailing list