diff src/aac/mp4ff/mp4util.c @ 451:5826c77f4acf trunk

[svn] - various overflow and security-related fixes from XMMS2 (mainly Juho Vaha-Herttua, et al)
author nenolod
date Wed, 17 Jan 2007 00:56:53 -0800
parents 3da1b8942b8b
children 3d6a2732f26a
line wrap: on
line diff
--- a/src/aac/mp4ff/mp4util.c	Wed Jan 17 00:29:28 2007 -0800
+++ b/src/aac/mp4ff/mp4util.c	Wed Jan 17 00:56:53 2007 -0800
@@ -30,13 +30,20 @@
 
 int32_t mp4ff_read_data(mp4ff_t *f, uint8_t *data, uint32_t size)
 {
-    int32_t result = 1;
-
-    result = f->stream->read(f->stream->user_data, data, size);
+    int32_t result;
+    uint32_t read = 0;
 
-    f->current_position += size;
+    while (read < size) {
+        result = f->stream->read(f->stream->user_data, data+read, size-read);
+	if (result <= 0) {
+		break;
+	}
+	read += result;
+    }
 
-    return result;
+    f->current_position += read;
+
+    return read;
 }
 
 int32_t mp4ff_truncate(mp4ff_t * f)