Browse Source

POSIX says you can use realloc() to shrink buffers ... make sure we dont trigger a buffer overflow in that case

Mike Frysinger 18 years ago
parent
commit
58f5f42180
1 changed files with 2 additions and 1 deletions
  1. 2 1
      libc/stdlib/malloc-simple/alloc.c

+ 2 - 1
libc/stdlib/malloc-simple/alloc.c

@@ -91,7 +91,8 @@ void *realloc(void *ptr, size_t size)
 
 
 	newptr = malloc(size);
 	newptr = malloc(size);
 	if (newptr) {
 	if (newptr) {
-		memcpy(newptr, ptr, *((size_t *) (ptr - sizeof(size_t))));
+		size_t old_size = *((size_t *) (ptr - sizeof(size_t)));
+		memcpy(newptr, ptr, (old_size < size ? old_size : size));
 		free(ptr);
 		free(ptr);
 	}
 	}
 	return newptr;
 	return newptr;