tests: Fix undefined behaviour
authorErik de Castro Lopo <erikd@mega-nerd.com>
Wed, 26 Aug 2015 22:42:23 +0000 (08:42 +1000)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Wed, 26 Aug 2015 23:34:43 +0000 (09:34 +1000)
Undefined behaviour in the test support code.

src/test_libFLAC/md5.c
src/test_libs_common/metadata_utils.c

index 88b72c0..0c52327 100644 (file)
@@ -167,8 +167,7 @@ static FLAC__byte target_digests [8][4][16] =
 static FLAC__bool test_md5_codec(void)
 {
        FLAC__int32 arrays[MAX_CHANNEL_COUNT][MD5_SAMPLE_COUNT], *pointer[MAX_CHANNEL_COUNT], **signal;
-       FLAC__int32 seed = 0x12345679;
-       unsigned chan, byte_size;
+       unsigned chan, byte_size, seed = 0x12345679;
 
        /* Set up signal data using a trival Linear Congruent PRNG. */
        signal = &pointer[0];
index cef3222..11491f8 100644 (file)
@@ -338,7 +338,7 @@ FLAC__bool mutils__compare_block_data_picture(const FLAC__StreamMetadata_Picture
                printf("FAILED, data_length mismatch, expected %u, got %u\n", block->data_length, blockcopy->data_length);
                return false;
        }
-       if(memcmp(blockcopy->data, block->data, block->data_length)) {
+       if(block->data_length > 0 && memcmp(blockcopy->data, block->data, block->data_length)) {
                printf("FAILED, data mismatch\n");
                return false;
        }