Commit c1e7c3ae authored by Phillip Lougher's avatar Phillip Lougher Committed by H. Peter Anvin

bzip2/lzma/gzip: pre-boot malloc doesn't return NULL on failure

The trivial malloc implementation used in the pre-boot environment by the
decompressors returns a bad pointer on failure (falling through after
calling error).  This is doubly wrong - the callers expect malloc to
return NULL on failure, second the error function is intended to be
used by the decompressors to propagate errors to *their* callers.  The
decompressors have no access to any state set by the error function.
Signed-off-by: default avatarPhillip Lougher <phillip@lougher.demon.co.uk>
LKML-Reference: <4b26b1ef.hIInb2AYPMtImAJO%phillip@lougher.demon.co.uk>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
parent 23637568
...@@ -25,7 +25,7 @@ static void *malloc(int size) ...@@ -25,7 +25,7 @@ static void *malloc(int size)
void *p; void *p;
if (size < 0) if (size < 0)
error("Malloc error"); return NULL;
if (!malloc_ptr) if (!malloc_ptr)
malloc_ptr = free_mem_ptr; malloc_ptr = free_mem_ptr;
...@@ -35,7 +35,7 @@ static void *malloc(int size) ...@@ -35,7 +35,7 @@ static void *malloc(int size)
malloc_ptr += size; malloc_ptr += size;
if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr) if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr)
error("Out of memory"); return NULL;
malloc_count++; malloc_count++;
return p; return p;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment