diff mbox series

[FFmpeg-devel,17/34] avformat/asfenc: Return proper error codes

Message ID AM7PR03MB666008D6FD7B10479C0012BE8FD29@AM7PR03MB6660.eurprd03.prod.outlook.com
State New
Headers show
Series [FFmpeg-devel,01/11] avformat/mux: Sanitize packets without data and side-data
Related show

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Andreas Rheinhardt Sept. 6, 2021, 2:27 a.m. UTC
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavformat/asfenc.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

Comments

Paul B Mahol Sept. 6, 2021, 7:54 p.m. UTC | #1
lgtm
diff mbox series

Patch

diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index e4d74c80cb..13d7eebddc 100644
--- a/libavformat/asfenc.c
+++ b/libavformat/asfenc.c
@@ -625,8 +625,10 @@  static int asf_write_header1(AVFormatContext *s, int64_t file_size,
             /* WAVEFORMATEX header */
             int wavsize = ff_put_wav_header(s, pb, par, FF_PUT_WAV_HEADER_FORCE_WAVEFORMATEX);
 
-            if (wavsize < 0)
+            if (wavsize < 0) {
+                ret = wavsize;
                 goto fail;
+            }
             if (wavsize != extra_size) {
                 cur_pos = avio_tell(pb);
                 avio_seek(pb, es_pos, SEEK_SET);
@@ -703,8 +705,10 @@  static int asf_write_header1(AVFormatContext *s, int64_t file_size,
             avio_wl16(pb, 4);
             avio_wl32(pb, par->codec_tag);
         }
-        if (!par->codec_tag)
+        if (!par->codec_tag) {
+            ret = AVERROR(EINVAL);
             goto fail;
+        }
     }
     end_header(pb, hpos);
 
@@ -735,16 +739,16 @@  static int asf_write_header1(AVFormatContext *s, int64_t file_size,
     avio_wl64(pb, asf->nb_packets); /* nb packets */
     avio_w8(pb, 1); /* ??? */
     avio_w8(pb, 1); /* ??? */
-    ffio_free_dyn_buf(&dyn_buf);
-    return 0;
+    ret = 0;
 fail:
     ffio_free_dyn_buf(&dyn_buf);
-    return -1;
+    return ret;
 }
 
 static int asf_write_header(AVFormatContext *s)
 {
     ASFContext *asf = s->priv_data;
+    int ret;
 
     s->packet_size  = asf->packet_size;
     s->max_interleave_delta = 0;
@@ -764,9 +768,8 @@  static int asf_write_header(AVFormatContext *s)
     /* the data-chunk-size has to be 50 (DATA_HEADER_SIZE), which is
      * data_size - asf->data_offset at the moment this function is done.
      * It is needed to use asf as a streamable format. */
-    if (asf_write_header1(s, 0, DATA_HEADER_SIZE) < 0) {
-        return -1;
-    }
+    if ((ret = asf_write_header1(s, 0, DATA_HEADER_SIZE)) < 0)
+        return ret;
 
     asf->packet_nb_payloads     = 0;
     asf->packet_timestamp_start = -1;