diff --git a/tests/suites/test_suite_ccm.function b/tests/suites/test_suite_ccm.function
index 472be64..e48b1f9 100644
--- a/tests/suites/test_suite_ccm.function
+++ b/tests/suites/test_suite_ccm.function
@@ -646,16 +646,10 @@
                                              data_t * add )
 {
     mbedtls_ccm_context ctx;
+    uint8_t add_second_buffer[2];
 
-    /* New auth buffer containing same data as original one,
-     * with added extra byte at the end */
-    uint8_t* add_extended = NULL;
-    ASSERT_ALLOC( add_extended, add->len + 1 );
-    if( add_extended )
-    {
-        memcpy( add_extended, add->x, add->len );
-        add_extended[add->len] = 0xAB; // some magic value
-    }
+    add_second_buffer[0] = add->x[ add->len - 1 ];
+    add_second_buffer[1] = 0xAB; // some magic value
 
     mbedtls_ccm_init( &ctx );
     TEST_EQUAL( mbedtls_ccm_setkey( &ctx, cipher_id, key->x, key->len * 8 ), 0 );
@@ -664,11 +658,10 @@
     TEST_EQUAL( 0, mbedtls_ccm_set_lengths( &ctx, add->len, 16, 16 ) );
 
     // pass incomplete auth data
-    TEST_EQUAL( 0, mbedtls_ccm_update_ad( &ctx, add_extended, add->len - 1) );
+    TEST_EQUAL( 0, mbedtls_ccm_update_ad( &ctx, add->x, add->len - 1) );
     // pass 2 extra bytes (1 missing byte from previous incomplete pass, and 1 unexpected byte)
-    TEST_EQUAL( MBEDTLS_ERR_CCM_BAD_INPUT, mbedtls_ccm_update_ad( &ctx, add_extended + add->len - 1, 2) );
+    TEST_EQUAL( MBEDTLS_ERR_CCM_BAD_INPUT, mbedtls_ccm_update_ad( &ctx, add_second_buffer, 2) );
 exit:
-    mbedtls_free( add_extended );
     mbedtls_ccm_free( &ctx );
 }
 /* END_CASE */
@@ -775,16 +768,10 @@
     mbedtls_ccm_context ctx;
     uint8_t *output = NULL;
     size_t olen;
+    uint8_t msg_second_buffer[2];
 
-    /* New plaintext/ciphertext buffer containing same data as original one,
-     * with added extra byte at the end */
-    uint8_t* msg_extended = NULL;
-    ASSERT_ALLOC( msg_extended, msg->len + 1 );
-    if( msg_extended )
-    {
-        memcpy( msg_extended, msg->x, msg->len );
-        msg_extended[msg->len] = 0xAB; // some magic value
-    }
+    msg_second_buffer[0] = msg->x[ msg->len - 1 ];
+    msg_second_buffer[1] = 0xAB; // some magic value
 
     mbedtls_ccm_init( &ctx );
     TEST_EQUAL( mbedtls_ccm_setkey( &ctx, cipher_id, key->x, key->len * 8 ), 0 );
@@ -796,12 +783,11 @@
 
     ASSERT_ALLOC( output, msg->len + 1 );
     // pass incomplete text
-    TEST_EQUAL( 0, mbedtls_ccm_update( &ctx, msg_extended, msg->len - 1, output, msg->len + 1, &olen ) );
+    TEST_EQUAL( 0, mbedtls_ccm_update( &ctx, msg->x, msg->len - 1, output, msg->len + 1, &olen ) );
     // pass 2 extra bytes (1 missing byte from previous incomplete pass, and 1 unexpected byte)
     TEST_EQUAL( MBEDTLS_ERR_CCM_BAD_INPUT, \
-                mbedtls_ccm_update( &ctx, msg_extended + msg->len - 1, 2, output +  msg->len - 1, 2, &olen ) );
+                mbedtls_ccm_update( &ctx, msg_second_buffer, 2, output +  msg->len - 1, 2, &olen ) );
 exit:
-    mbedtls_free( msg_extended );
     mbedtls_free( output );
     mbedtls_ccm_free( &ctx );
 }
