From 1f3d54ddb44c2834fbda6ef2b13eb354b7e82db4 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 22 Feb 2017 11:08:00 -0800 Subject: [PATCH] fixed malloc(0) potential issue Added test cases to cover #556 patch --- examples/Makefile | 17 ++++++++++++----- examples/simple_decompression.c | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/examples/Makefile b/examples/Makefile index 741022869..b84983f08 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -9,7 +9,7 @@ # This Makefile presumes libzstd is installed, using `sudo make install` -LDFLAGS+= -lzstd +LDFLAGS += -lzstd .PHONY: default all clean test @@ -52,16 +52,23 @@ clean: test: all cp README.md tmp cp Makefile tmp2 - @echo starting simple compression + @echo -- Simple compression tests ./simple_compression tmp ./simple_decompression tmp.zst ./streaming_decompression tmp.zst > /dev/null - @echo starting streaming compression + @echo -- Streaming compression tests ./streaming_compression tmp ./streaming_decompression tmp.zst > /dev/null - @echo starting multiple streaming compression + @echo -- Edge cases detection + ! ./streaming_decompression tmp # invalid input, must fail + ! ./simple_decompression tmp # invalid input, must fail + ! ./simple_decompression tmp.zst # unknown input size, must fail + touch tmpNull # create 0-size file + ./simple_compression tmpNull + ./simple_decompression tmpNull.zst # 0-size frame : must work + @echo -- Multiple streaming tests ./multiple_streaming_compression *.c - @echo starting dictionary compression + @echo -- Dictionary compression tests ./dictionary_compression tmp2 tmp README.md ./dictionary_decompression tmp2.zst tmp.zst README.md $(RM) tmp* *.zst diff --git a/examples/simple_decompression.c b/examples/simple_decompression.c index fa4e3e680..4b7ea59e5 100644 --- a/examples/simple_decompression.c +++ b/examples/simple_decompression.c @@ -35,7 +35,7 @@ static FILE* fopen_orDie(const char *filename, const char *instruction) static void* malloc_orDie(size_t size) { - void* const buff = malloc(size); + void* const buff = malloc(size + !size); /* avoid allocating size of 0 : may return NULL (implementation dependent) */ if (buff) return buff; /* error */ fprintf(stderr, "malloc: %s \n", strerror(errno));