Only make buffer smaller in fill_buffer() if read_packet() is set.
authorCarl Eugen Hoyos <cehoyos@ag.or.at>
Mon, 4 Apr 2011 14:43:15 +0000 (16:43 +0200)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Mon, 4 Apr 2011 14:43:15 +0000 (16:43 +0200)
Fixes a possible invalid free().

libavformat/aviobuf.c

index 5396eb1..152869b 100644 (file)
@@ -556,7 +556,7 @@ static void fill_buffer(AVIOContext *s)
     }
 
     /* make buffer smaller in case it ended up large after probing */
-    if (s->buffer_size > max_buffer_size) {
+    if (s->read_packet && s->buffer_size > max_buffer_size) {
         ffio_set_buf_size(s, max_buffer_size);
 
         s->checksum_ptr = dst = s->buffer;