[FFmpeg-cvslog] avio: Check for invalid buffer length.

Alex Converse git at videolan.org
Tue Oct 18 01:57:31 CEST 2011


ffmpeg | branch: master | Alex Converse <alex.converse at gmail.com> | Fri Oct 14 18:27:59 2011 -0700| [ab2940691ba76e1a9b0ce608db0dfc45021d741e] | committer: Alex Converse

avio: Check for invalid buffer length.

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

 libavformat/aviobuf.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index b5e9d4c..8f3599a 100644
--- a/libavformat/aviobuf.c
+++ b/libavformat/aviobuf.c
@@ -769,13 +769,14 @@ int avio_get_str(AVIOContext *s, int maxlen, char *buf, int buflen)
 {
     int i;
 
+    if (buflen <= 0)
+        return AVERROR(EINVAL);
     // reserve 1 byte for terminating 0
     buflen = FFMIN(buflen - 1, maxlen);
     for (i = 0; i < buflen; i++)
         if (!(buf[i] = avio_r8(s)))
             return i + 1;
-    if (buflen)
-        buf[i] = 0;
+    buf[i] = 0;
     for (; i < maxlen; i++)
         if (!avio_r8(s))
             return i + 1;
@@ -787,6 +788,8 @@ int avio_get_str(AVIOContext *s, int maxlen, char *buf, int buflen)
 {\
     char* q = buf;\
     int ret = 0;\
+    if (buflen <= 0) \
+        return AVERROR(EINVAL); \
     while (ret + 1 < maxlen) {\
         uint8_t tmp;\
         uint32_t ch;\



More information about the ffmpeg-cvslog mailing list