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

Vittorio Giovara git at videolan.org
Fri Dec 19 04:42:52 CET 2014


ffmpeg | branch: master | Vittorio Giovara <vittorio.giovara at gmail.com> | Tue Dec 16 10:43:48 2014 +0100| [38129c26c51b933d7db423f904ba0cd6a88ca1ed] | committer: Vittorio Giovara

cmdutils: check file access functions return values

CC: libav-stable at libav.org
Bug-Id: CID 703706

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

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

diff --git a/cmdutils.c b/cmdutils.c
index eff011c..19589ce 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -1397,14 +1397,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) {
@@ -1420,6 +1437,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