diff --git a/library/dhm.c b/library/dhm.c index 4a5957162..90e5b4b19 100644 --- a/library/dhm.c +++ b/library/dhm.c @@ -128,6 +128,9 @@ int dhm_make_params( dhm_context *ctx, int x_size, size_t n1, n2, n3; unsigned char *p; + if( mpi_cmp_int( &ctx->P, 0 ) == 0 ) + return( POLARSSL_ERR_DHM_BAD_INPUT_DATA ); + /* * Generate X as large as possible ( < P ) */ @@ -211,6 +214,9 @@ int dhm_make_public( dhm_context *ctx, int x_size, if( ctx == NULL || olen < 1 || olen > ctx->len ) return( POLARSSL_ERR_DHM_BAD_INPUT_DATA ); + if( mpi_cmp_int( &ctx->P, 0 ) == 0 ) + return( POLARSSL_ERR_DHM_BAD_INPUT_DATA ); + /* * generate X and calculate GX = G^X mod P */