]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixed malloc(0) potential issue
authorYann Collet <cyan@fb.com>
Wed, 22 Feb 2017 19:08:00 +0000 (11:08 -0800)
committerYann Collet <cyan@fb.com>
Wed, 22 Feb 2017 19:08:00 +0000 (11:08 -0800)
Added test cases to cover #556 patch

examples/Makefile
examples/simple_decompression.c

index 74102286905d2a8d0baa617ed32a7e57068d5102..b84983f08c0c3d9311daf61068747e9a2f284231 100644 (file)
@@ -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
index fa4e3e680f5931d435ccadbcf3e802ea8ad63a78..4b7ea59e50ccf5154b9ba2a01f259f82305b6b3e 100644 (file)
@@ -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));