Skip to content

Commit

Permalink
Remove largely useless bit of test log to silence GCC 12
Browse files Browse the repository at this point in the history
GCC 12 emits a warning because it thinks `buffer1` is used after having been
freed. The code is correct C because we're only using the value of
`(uintptr_t)buffer1`, not `buffer1`. However, we aren't using the value for
anything useful: it doesn't really matter if an alloc-free-alloc sequence
returns the same address twice. So don't print that bit of information, and
this way we don't need to save the old address.

Fixes #5974.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
  • Loading branch information
gilles-peskine-arm committed Jun 27, 2022
1 parent 8b3f26a commit 52396ef
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 5 deletions.
2 changes: 2 additions & 0 deletions ChangeLog.d/selftest-gcc12.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Bugfix
* Silence a warning from GCC 12 in the selftest program. Fixes #5974.
6 changes: 1 addition & 5 deletions programs/test/selftest.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ static int calloc_self_test( int verbose )
void *empty2 = mbedtls_calloc( 0, 1 );
void *buffer1 = mbedtls_calloc( 1, 1 );
void *buffer2 = mbedtls_calloc( 1, 1 );
uintptr_t old_buffer1;

if( empty1 == NULL && empty2 == NULL )
{
Expand Down Expand Up @@ -131,7 +130,6 @@ static int calloc_self_test( int verbose )
mbedtls_printf( " CALLOC(1): passed\n" );
}

old_buffer1 = (uintptr_t) buffer1;
mbedtls_free( buffer1 );
buffer1 = mbedtls_calloc( 1, 1 );
if( buffer1 == NULL )
Expand All @@ -143,9 +141,7 @@ static int calloc_self_test( int verbose )
else
{
if( verbose )
mbedtls_printf( " CALLOC(1 again): passed (%s address)\n",
(uintptr_t) old_buffer1 == (uintptr_t) buffer1 ?
"same" : "different" );
mbedtls_printf( " CALLOC(1 again): passed\n" );
}

if( verbose )
Expand Down

0 comments on commit 52396ef

Please sign in to comment.