Home | History | Annotate | Download | only in tests
      1 
      2 #include <stdlib.h>
      3 #include <stdio.h>
      4 
      5 #include "../memcheck.h"
      6 
      7 /* This test checks that VALGRIND_CHECK_MEM_IS_DEFINED correctly
      8    reports two errors when presented with a buffer which contains both
      9    undefined data and some out of range component(s), and the
     10    undefined data appears before the out of range components.  Should
     11    report 5 errors in total: the first test should report 2, the rest
     12    1 each. */
     13 
     14 int main ( void )
     15 {
     16    char* a;
     17 
     18    fprintf(stderr, "\n---- part defined, address error at end ----\n\n");
     19    a = malloc(8);
     20    a[0] = a[1] = a[2] = a[3] = a[6] = a[7] = 'x';
     21    (void) VALGRIND_CHECK_MEM_IS_DEFINED(a, 9);
     22    free(a);
     23 
     24    fprintf(stderr, "\n---- part defined, address error at start ----\n\n");
     25    a = malloc(8);
     26    a[0] = a[1] = a[2] = a[3] = a[6] = a[7] = 'x';
     27    (void) VALGRIND_CHECK_MEM_IS_DEFINED(a-1, 9);
     28    free(a);
     29 
     30    fprintf(stderr, "\n---- fully defined, address error at end ----\n\n");
     31    a = malloc(8);
     32    a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = a[6] = a[7] = 'x';
     33    (void) VALGRIND_CHECK_MEM_IS_DEFINED(a, 9);
     34    free(a);
     35 
     36    fprintf(stderr, "\n---- fully defined, address error at start ----\n\n");
     37    a = malloc(8);
     38    a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = a[6] = a[7] = 'x';
     39    (void) VALGRIND_CHECK_MEM_IS_DEFINED(a-1, 9);
     40    free(a);
     41 
     42    return 0;
     43 }
     44