[FFmpeg-cvslog] cmdutils: check file access functions return values

Vittorio Giovara git at videolan.org
Sat Jan 17 23:20:41 CET 2015


ffmpeg | branch: release/2.4 | Vittorio Giovara <vittorio.giovara at gmail.com> | Tue Dec 16 10:43:48 2014 +0100| [cbfdbba58e1460bd0791911ad84a6c76b5500a0e] | committer: Luca Barbato

cmdutils: check file access functions return values

CC: libav-stable at libav.org
Bug-Id: CID 703706
(cherry picked from commit 38129c26c51b933d7db423f904ba0cd6a88ca1ed)
Signed-off-by: Luca Barbato <lu_zero at gentoo.org>

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

 cmdutils.c |   28 +++++++++++++++++++++++-----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/cmdutils.c b/cmdutils.c
index 202b288..a7b0060 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -1395,14 +1395,31 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
                strerror(errno));
         return AVERROR(errno);
     }
-    fseek(f, 0, SEEK_END);
-    *size = ftell(f);
-    fseek(f, 0, SEEK_SET);
+
+    ret = fseek(f, 0, SEEK_END);
+    if (ret == -1) {
+        ret = AVERROR(errno);
+        goto out;
+    }
+
+    ret = ftell(f);
+    if (ret < 0) {
+        ret = AVERROR(errno);
+        goto out;
+    }
+    *size = ret;
+
+    ret = fseek(f, 0, SEEK_SET);
+    if (ret == -1) {
+        ret = AVERROR(errno);
+        goto out;
+    }
+
     *bufptr = av_malloc(*size + 1);
     if (!*bufptr) {
         av_log(NULL, AV_LOG_ERROR, "Could not allocate file buffer\n");
-        fclose(f);
-        return AVERROR(ENOMEM);
+        ret = AVERROR(ENOMEM);
+        goto out;
     }
     ret = fread(*bufptr, 1, *size, f);
     if (ret < *size) {
@@ -1418,6 +1435,7 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
         (*bufptr)[(*size)++] = '\0';
     }
 
+out:
     fclose(f);
     return ret;
 }



More information about the ffmpeg-cvslog mailing list