summaryrefslogtreecommitdiffstats
path: root/testsuites/libtests/malloctest/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites/libtests/malloctest/init.c')
-rw-r--r--testsuites/libtests/malloctest/init.c106
1 files changed, 96 insertions, 10 deletions
diff --git a/testsuites/libtests/malloctest/init.c b/testsuites/libtests/malloctest/init.c
index 4d0f421c02..c9dcb63b2c 100644
--- a/testsuites/libtests/malloctest/init.c
+++ b/testsuites/libtests/malloctest/init.c
@@ -1153,7 +1153,10 @@ static void test_rtems_malloc(void)
void *p;
p = rtems_malloc(0);
- rtems_test_assert(p == NULL);
+ rtems_test_assert(p != NULL);
+
+ RTEMS_OBFUSCATE_VARIABLE(p);
+ free(p);
errno = 0;
p = rtems_malloc(SIZE_MAX / 2);
@@ -1163,6 +1166,7 @@ static void test_rtems_malloc(void)
p = rtems_malloc(1);
rtems_test_assert(p != NULL);
+ RTEMS_OBFUSCATE_VARIABLE(p);
free(p);
}
@@ -1172,13 +1176,22 @@ static void test_rtems_calloc(void)
int *i;
p = rtems_calloc(0, 0);
- rtems_test_assert(p == NULL);
+ rtems_test_assert(p != NULL);
+
+ RTEMS_OBFUSCATE_VARIABLE(p);
+ free(p);
p = rtems_calloc(0, 1);
- rtems_test_assert(p == NULL);
+ rtems_test_assert(p != NULL);
+
+ RTEMS_OBFUSCATE_VARIABLE(p);
+ free(p);
p = rtems_calloc(1, 0);
- rtems_test_assert(p == NULL);
+ rtems_test_assert(p != NULL);
+
+ RTEMS_OBFUSCATE_VARIABLE(p);
+ free(p);
errno = 0;
p = rtems_calloc(1, SIZE_MAX / 2);
@@ -1202,6 +1215,8 @@ static void test_rtems_calloc(void)
rtems_test_assert(i != NULL);
rtems_test_assert(*i == 0);
+
+ RTEMS_OBFUSCATE_VARIABLE(p);
free(i);
}
@@ -1301,6 +1316,82 @@ static void test_greedy_allocate(void)
rtems_test_assert( p == NULL );
}
+static void test_alloc_zero_size(void)
+{
+ size_t size;
+ void *p;
+ int eno;
+
+ size = 0;
+
+ RTEMS_OBFUSCATE_VARIABLE( size );
+ p = malloc( size );
+ rtems_test_assert( p != NULL );
+
+ RTEMS_OBFUSCATE_VARIABLE( p );
+ free( p );
+
+ RTEMS_OBFUSCATE_VARIABLE( size );
+ p = calloc( 1, size );
+ rtems_test_assert( p != NULL );
+
+ RTEMS_OBFUSCATE_VARIABLE( p );
+ free( p );
+
+ RTEMS_OBFUSCATE_VARIABLE( size );
+ p = rtems_malloc( size );
+ rtems_test_assert( p != NULL );
+
+ RTEMS_OBFUSCATE_VARIABLE( p );
+ free( p );
+
+ RTEMS_OBFUSCATE_VARIABLE( size );
+ p = rtems_calloc( 1, size );
+ rtems_test_assert( p != NULL );
+
+ RTEMS_OBFUSCATE_VARIABLE( p );
+ free( p );
+
+ RTEMS_OBFUSCATE_VARIABLE( size );
+ p = NULL;
+ eno = posix_memalign( &p, 32, size );
+ rtems_test_assert( eno == 0 );
+ rtems_test_assert( p != NULL );
+
+ RTEMS_OBFUSCATE_VARIABLE( p );
+ free( p );
+
+ RTEMS_OBFUSCATE_VARIABLE( size );
+ p = NULL;
+ eno = rtems_memalign( &p, 32, size );
+ rtems_test_assert( eno == 0 );
+ rtems_test_assert( p != NULL );
+
+ RTEMS_OBFUSCATE_VARIABLE( p );
+ free( p );
+
+ RTEMS_OBFUSCATE_VARIABLE( size );
+ p = aligned_alloc( 32, size );
+ rtems_test_assert( p != NULL );
+
+ RTEMS_OBFUSCATE_VARIABLE( p );
+ free( p );
+
+ RTEMS_OBFUSCATE_VARIABLE( size );
+ p = realloc( NULL, size );
+ rtems_test_assert( p != NULL );
+
+ RTEMS_OBFUSCATE_VARIABLE( p );
+ free( p );
+
+ RTEMS_OBFUSCATE_VARIABLE( size );
+ p = reallocarray( NULL, 1, size );
+ rtems_test_assert( p != NULL );
+
+ RTEMS_OBFUSCATE_VARIABLE( p );
+ free( p );
+}
+
rtems_task Init(
rtems_task_argument argument
)
@@ -1327,12 +1418,6 @@ rtems_task Init(
rtems_test_assert( p1 == NULL );
#pragma GCC diagnostic pop
- /*
- * Verify error case where malloc of size 0.
- */
- p1 = malloc( 0 );
- rtems_test_assert( p1 == NULL );
-
test_heap_initialize();
test_heap_block_allocate();
test_heap_allocate();
@@ -1351,6 +1436,7 @@ rtems_task Init(
test_rtems_malloc();
test_rtems_calloc();
test_greedy_allocate();
+ test_alloc_zero_size();
test_posix_memalign();