mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-01-26 21:35:35 +00:00
Merge pull request #3282 from gabor-mezei-arm/2905_missing_cleanup_in_ssl_tests
Force cleanup by using goto exit instead of direct return
This commit is contained in:
commit
d4d1ab1746
@ -149,6 +149,7 @@ int main( void )
|
|||||||
#define DFL_NSS_KEYLOG 0
|
#define DFL_NSS_KEYLOG 0
|
||||||
#define DFL_NSS_KEYLOG_FILE NULL
|
#define DFL_NSS_KEYLOG_FILE NULL
|
||||||
#define DFL_SKIP_CLOSE_NOTIFY 0
|
#define DFL_SKIP_CLOSE_NOTIFY 0
|
||||||
|
#define DFL_QUERY_CONFIG_MODE 0
|
||||||
|
|
||||||
#define GET_REQUEST "GET %s HTTP/1.0\r\nExtra-header: "
|
#define GET_REQUEST "GET %s HTTP/1.0\r\nExtra-header: "
|
||||||
#define GET_REQUEST_END "\r\n\r\n"
|
#define GET_REQUEST_END "\r\n\r\n"
|
||||||
@ -539,6 +540,7 @@ struct options
|
|||||||
* after renegotiation */
|
* after renegotiation */
|
||||||
int reproducible; /* make communication reproducible */
|
int reproducible; /* make communication reproducible */
|
||||||
int skip_close_notify; /* skip sending the close_notify alert */
|
int skip_close_notify; /* skip sending the close_notify alert */
|
||||||
|
int query_config_mode; /* whether to read config */
|
||||||
} opt;
|
} opt;
|
||||||
|
|
||||||
int query_config( const char *config );
|
int query_config( const char *config );
|
||||||
@ -1102,6 +1104,7 @@ int report_cid_usage( mbedtls_ssl_context *ssl,
|
|||||||
int main( int argc, char *argv[] )
|
int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
int ret = 0, len, tail_len, i, written, frags, retry_left;
|
int ret = 0, len, tail_len, i, written, frags, retry_left;
|
||||||
|
int query_config_ret = 0;
|
||||||
mbedtls_net_context server_fd;
|
mbedtls_net_context server_fd;
|
||||||
io_ctx_t io_ctx;
|
io_ctx_t io_ctx;
|
||||||
|
|
||||||
@ -1300,6 +1303,7 @@ int main( int argc, char *argv[] )
|
|||||||
opt.nss_keylog = DFL_NSS_KEYLOG;
|
opt.nss_keylog = DFL_NSS_KEYLOG;
|
||||||
opt.nss_keylog_file = DFL_NSS_KEYLOG_FILE;
|
opt.nss_keylog_file = DFL_NSS_KEYLOG_FILE;
|
||||||
opt.skip_close_notify = DFL_SKIP_CLOSE_NOTIFY;
|
opt.skip_close_notify = DFL_SKIP_CLOSE_NOTIFY;
|
||||||
|
opt.query_config_mode = DFL_QUERY_CONFIG_MODE;
|
||||||
|
|
||||||
for( i = 1; i < argc; i++ )
|
for( i = 1; i < argc; i++ )
|
||||||
{
|
{
|
||||||
@ -1686,7 +1690,9 @@ int main( int argc, char *argv[] )
|
|||||||
}
|
}
|
||||||
else if( strcmp( p, "query_config" ) == 0 )
|
else if( strcmp( p, "query_config" ) == 0 )
|
||||||
{
|
{
|
||||||
mbedtls_exit( query_config( q ) );
|
opt.query_config_mode = 1;
|
||||||
|
query_config_ret = query_config( q );
|
||||||
|
goto exit;
|
||||||
}
|
}
|
||||||
else if( strcmp( p, "serialize") == 0 )
|
else if( strcmp( p, "serialize") == 0 )
|
||||||
{
|
{
|
||||||
@ -2685,7 +2691,7 @@ int main( int argc, char *argv[] )
|
|||||||
{
|
{
|
||||||
mbedtls_printf( " failed\n ! mbedtls_ssl_set_cid returned %d\n\n",
|
mbedtls_printf( " failed\n ! mbedtls_ssl_set_cid returned %d\n\n",
|
||||||
ret );
|
ret );
|
||||||
return( ret );
|
goto exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */
|
#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */
|
||||||
@ -3348,7 +3354,8 @@ exit:
|
|||||||
* immediately because of bad cmd line params,
|
* immediately because of bad cmd line params,
|
||||||
* for example). */
|
* for example). */
|
||||||
status = psa_destroy_key( slot );
|
status = psa_destroy_key( slot );
|
||||||
if( status != PSA_SUCCESS )
|
if( ( status != PSA_SUCCESS ) &&
|
||||||
|
( opt.query_config_mode == DFL_QUERY_CONFIG_MODE ) )
|
||||||
{
|
{
|
||||||
mbedtls_printf( "Failed to destroy key slot %u - error was %d",
|
mbedtls_printf( "Failed to destroy key slot %u - error was %d",
|
||||||
(unsigned) slot, (int) status );
|
(unsigned) slot, (int) status );
|
||||||
@ -3367,15 +3374,21 @@ exit:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
mbedtls_printf( " + Press Enter to exit this program.\n" );
|
if( opt.query_config_mode == DFL_QUERY_CONFIG_MODE )
|
||||||
fflush( stdout ); getchar();
|
{
|
||||||
|
mbedtls_printf( " + Press Enter to exit this program.\n" );
|
||||||
|
fflush( stdout ); getchar();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Shell can not handle large exit numbers -> 1 for errors
|
// Shell can not handle large exit numbers -> 1 for errors
|
||||||
if( ret < 0 )
|
if( ret < 0 )
|
||||||
ret = 1;
|
ret = 1;
|
||||||
|
|
||||||
mbedtls_exit( ret );
|
if( opt.query_config_mode == DFL_QUERY_CONFIG_MODE )
|
||||||
|
mbedtls_exit( ret );
|
||||||
|
else
|
||||||
|
mbedtls_exit( query_config_ret );
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_SSL_TLS_C &&
|
#endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_SSL_TLS_C &&
|
||||||
MBEDTLS_SSL_CLI_C && MBEDTLS_NET_C && MBEDTLS_RSA_C &&
|
MBEDTLS_SSL_CLI_C && MBEDTLS_NET_C && MBEDTLS_RSA_C &&
|
||||||
|
@ -182,6 +182,7 @@ int main( void )
|
|||||||
#define DFL_REPRODUCIBLE 0
|
#define DFL_REPRODUCIBLE 0
|
||||||
#define DFL_NSS_KEYLOG 0
|
#define DFL_NSS_KEYLOG 0
|
||||||
#define DFL_NSS_KEYLOG_FILE NULL
|
#define DFL_NSS_KEYLOG_FILE NULL
|
||||||
|
#define DFL_QUERY_CONFIG_MODE 0
|
||||||
|
|
||||||
#define LONG_RESPONSE "<p>01-blah-blah-blah-blah-blah-blah-blah-blah-blah\r\n" \
|
#define LONG_RESPONSE "<p>01-blah-blah-blah-blah-blah-blah-blah-blah-blah\r\n" \
|
||||||
"02-blah-blah-blah-blah-blah-blah-blah-blah-blah-blah-blah-blah-blah\r\n" \
|
"02-blah-blah-blah-blah-blah-blah-blah-blah-blah-blah-blah-blah-blah\r\n" \
|
||||||
@ -643,6 +644,7 @@ struct options
|
|||||||
const char *cid_val_renego; /* the CID to use for incoming messages
|
const char *cid_val_renego; /* the CID to use for incoming messages
|
||||||
* after renegotiation */
|
* after renegotiation */
|
||||||
int reproducible; /* make communication reproducible */
|
int reproducible; /* make communication reproducible */
|
||||||
|
int query_config_mode; /* whether to read config */
|
||||||
} opt;
|
} opt;
|
||||||
|
|
||||||
int query_config( const char *config );
|
int query_config( const char *config );
|
||||||
@ -1723,6 +1725,7 @@ int report_cid_usage( mbedtls_ssl_context *ssl,
|
|||||||
int main( int argc, char *argv[] )
|
int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
int ret = 0, len, written, frags, exchanges_left;
|
int ret = 0, len, written, frags, exchanges_left;
|
||||||
|
int query_config_ret = 0;
|
||||||
int version_suites[4][2];
|
int version_suites[4][2];
|
||||||
io_ctx_t io_ctx;
|
io_ctx_t io_ctx;
|
||||||
unsigned char* buf = 0;
|
unsigned char* buf = 0;
|
||||||
@ -1972,6 +1975,7 @@ int main( int argc, char *argv[] )
|
|||||||
opt.reproducible = DFL_REPRODUCIBLE;
|
opt.reproducible = DFL_REPRODUCIBLE;
|
||||||
opt.nss_keylog = DFL_NSS_KEYLOG;
|
opt.nss_keylog = DFL_NSS_KEYLOG;
|
||||||
opt.nss_keylog_file = DFL_NSS_KEYLOG_FILE;
|
opt.nss_keylog_file = DFL_NSS_KEYLOG_FILE;
|
||||||
|
opt.query_config_mode = DFL_QUERY_CONFIG_MODE;
|
||||||
|
|
||||||
for( i = 1; i < argc; i++ )
|
for( i = 1; i < argc; i++ )
|
||||||
{
|
{
|
||||||
@ -2386,7 +2390,9 @@ int main( int argc, char *argv[] )
|
|||||||
}
|
}
|
||||||
else if( strcmp( p, "query_config" ) == 0 )
|
else if( strcmp( p, "query_config" ) == 0 )
|
||||||
{
|
{
|
||||||
mbedtls_exit( query_config( q ) );
|
opt.query_config_mode = 1;
|
||||||
|
query_config_ret = query_config( q );
|
||||||
|
goto exit;
|
||||||
}
|
}
|
||||||
else if( strcmp( p, "serialize") == 0 )
|
else if( strcmp( p, "serialize") == 0 )
|
||||||
{
|
{
|
||||||
@ -4261,8 +4267,11 @@ exit:
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mbedtls_printf( " . Cleaning up..." );
|
if( opt.query_config_mode == DFL_QUERY_CONFIG_MODE )
|
||||||
fflush( stdout );
|
{
|
||||||
|
mbedtls_printf( " . Cleaning up..." );
|
||||||
|
fflush( stdout );
|
||||||
|
}
|
||||||
|
|
||||||
mbedtls_net_free( &client_fd );
|
mbedtls_net_free( &client_fd );
|
||||||
mbedtls_net_free( &listen_fd );
|
mbedtls_net_free( &listen_fd );
|
||||||
@ -4292,7 +4301,8 @@ exit:
|
|||||||
sni_free( sni_info );
|
sni_free( sni_info );
|
||||||
#endif
|
#endif
|
||||||
#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED)
|
#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED)
|
||||||
if( ( ret = psk_free( psk_info ) ) != 0 )
|
ret = psk_free( psk_info );
|
||||||
|
if( ( ret != 0 ) && ( opt.query_config_mode == DFL_QUERY_CONFIG_MODE ) )
|
||||||
mbedtls_printf( "Failed to list of opaque PSKs - error was %d\n", ret );
|
mbedtls_printf( "Failed to list of opaque PSKs - error was %d\n", ret );
|
||||||
#endif
|
#endif
|
||||||
#if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_FS_IO)
|
#if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_FS_IO)
|
||||||
@ -4308,7 +4318,8 @@ exit:
|
|||||||
* immediately because of bad cmd line params,
|
* immediately because of bad cmd line params,
|
||||||
* for example). */
|
* for example). */
|
||||||
status = psa_destroy_key( psk_slot );
|
status = psa_destroy_key( psk_slot );
|
||||||
if( status != PSA_SUCCESS )
|
if( ( status != PSA_SUCCESS ) &&
|
||||||
|
( opt.query_config_mode == DFL_QUERY_CONFIG_MODE ) )
|
||||||
{
|
{
|
||||||
mbedtls_printf( "Failed to destroy key slot %u - error was %d",
|
mbedtls_printf( "Failed to destroy key slot %u - error was %d",
|
||||||
(unsigned) psk_slot, (int) status );
|
(unsigned) psk_slot, (int) status );
|
||||||
@ -4347,18 +4358,24 @@ exit:
|
|||||||
mbedtls_memory_buffer_alloc_free();
|
mbedtls_memory_buffer_alloc_free();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mbedtls_printf( " done.\n" );
|
if( opt.query_config_mode == DFL_QUERY_CONFIG_MODE )
|
||||||
|
{
|
||||||
|
mbedtls_printf( " done.\n" );
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
mbedtls_printf( " + Press Enter to exit this program.\n" );
|
mbedtls_printf( " + Press Enter to exit this program.\n" );
|
||||||
fflush( stdout ); getchar();
|
fflush( stdout ); getchar();
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// Shell can not handle large exit numbers -> 1 for errors
|
// Shell can not handle large exit numbers -> 1 for errors
|
||||||
if( ret < 0 )
|
if( ret < 0 )
|
||||||
ret = 1;
|
ret = 1;
|
||||||
|
|
||||||
mbedtls_exit( ret );
|
if( opt.query_config_mode == DFL_QUERY_CONFIG_MODE )
|
||||||
|
mbedtls_exit( ret );
|
||||||
|
else
|
||||||
|
mbedtls_exit( query_config_ret );
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_SSL_TLS_C &&
|
#endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_SSL_TLS_C &&
|
||||||
MBEDTLS_SSL_SRV_C && MBEDTLS_NET_C && MBEDTLS_RSA_C &&
|
MBEDTLS_SSL_SRV_C && MBEDTLS_NET_C && MBEDTLS_RSA_C &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user