From 11556e2846728f33f70155e58831a6079740b71b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 Aug 2017 13:41:19 +0200 Subject: [PATCH] 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. --- library/ecp.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 5f2c41b00..428dc68cf 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1885,7 +1885,7 @@ static unsigned char ecp_pick_window_size( const mbedtls_ecp_group *grp, * * This function is mainly responsible for administrative work: * - 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. * * 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 ) { int ret; - unsigned char w, p_eq_g = 0, i; + unsigned char w, p_eq_g, i; size_t d; - unsigned char T_size = 0, T_ok = 0; - mbedtls_ecp_point *T = NULL; + unsigned char T_size, T_ok; + mbedtls_ecp_point *T; 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_ok = 1; } - + else #if defined(MBEDTLS_ECP_RESTARTABLE) /* 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 */ T = rs_ctx->rsm->T; rs_ctx->rsm->T = NULL; rs_ctx->rsm->T_size = 0; - if( rs_ctx->rsm->state >= ecp_rsm_comb_core ) - T_ok = 1; + T_ok = rs_ctx->rsm->state >= ecp_rsm_comb_core; } + else #endif - /* Allocate table if we didn't have any */ - if( T == NULL ) { T = mbedtls_calloc( T_size, sizeof( mbedtls_ecp_point ) ); 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++ ) mbedtls_ecp_point_init( &T[i] ); + + T_ok = 0; } /* Compute table (or finish computing it) if not done already */