Clarify initialization of T in mul_comb()

Exactly one of three ways will be used, so make that clear by using an
if 1 else if 2 else 3 structure.

While at it, don't initialize variables at declaration, just to make extra
sure they're properly initialized afterwards in all code paths.
This commit is contained in:
Manuel Pégourié-Gonnard 2017-08-24 13:41:19 +02:00
parent 0b23f167ba
commit 11556e2846

View File

@ -1885,7 +1885,7 @@ static unsigned char ecp_pick_window_size( const mbedtls_ecp_group *grp,
* *
* This function is mainly responsible for administrative work: * This function is mainly responsible for administrative work:
* - managing the restart context if enabled * - managing the restart context if enabled
* - managing the table of precomputed points (passed between the above two * - managing the table of precomputed points (passed between the below two
* functions): allocation, computation, ownership tranfer, freeing. * functions): allocation, computation, ownership tranfer, freeing.
* *
* It delegates the actual arithmetic work to: * It delegates the actual arithmetic work to:
@ -1900,10 +1900,10 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
mbedtls_ecp_restart_ctx *rs_ctx ) mbedtls_ecp_restart_ctx *rs_ctx )
{ {
int ret; int ret;
unsigned char w, p_eq_g = 0, i; unsigned char w, p_eq_g, i;
size_t d; size_t d;
unsigned char T_size = 0, T_ok = 0; unsigned char T_size, T_ok;
mbedtls_ecp_point *T = NULL; mbedtls_ecp_point *T;
ECP_RS_ENTER( rsm ); ECP_RS_ENTER( rsm );
@ -1925,23 +1925,21 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
T = grp->T; T = grp->T;
T_ok = 1; T_ok = 1;
} }
else
#if defined(MBEDTLS_ECP_RESTARTABLE) #if defined(MBEDTLS_ECP_RESTARTABLE)
/* Pre-computed table: do we have one in progress? complete? */ /* Pre-computed table: do we have one in progress? complete? */
if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->T != NULL && T == NULL ) if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->T != NULL )
{ {
/* transfer ownership of T from rsm to local function */ /* transfer ownership of T from rsm to local function */
T = rs_ctx->rsm->T; T = rs_ctx->rsm->T;
rs_ctx->rsm->T = NULL; rs_ctx->rsm->T = NULL;
rs_ctx->rsm->T_size = 0; rs_ctx->rsm->T_size = 0;
if( rs_ctx->rsm->state >= ecp_rsm_comb_core ) T_ok = rs_ctx->rsm->state >= ecp_rsm_comb_core;
T_ok = 1;
} }
else
#endif #endif
/* Allocate table if we didn't have any */ /* Allocate table if we didn't have any */
if( T == NULL )
{ {
T = mbedtls_calloc( T_size, sizeof( mbedtls_ecp_point ) ); T = mbedtls_calloc( T_size, sizeof( mbedtls_ecp_point ) );
if( T == NULL ) if( T == NULL )
@ -1952,6 +1950,8 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
for( i = 0; i < T_size; i++ ) for( i = 0; i < T_size; i++ )
mbedtls_ecp_point_init( &T[i] ); mbedtls_ecp_point_init( &T[i] );
T_ok = 0;
} }
/* Compute table (or finish computing it) if not done already */ /* Compute table (or finish computing it) if not done already */