diff options
Diffstat (limited to 'lib/ext_srp.c')
-rw-r--r-- | lib/ext_srp.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/ext_srp.c b/lib/ext_srp.c index 887bfbbf56..d4476b19d1 100644 --- a/lib/ext_srp.c +++ b/lib/ext_srp.c @@ -35,8 +35,15 @@ int _gnutls_srp_recv_params( GNUTLS_STATE state, const opaque* data, int data_si } if (state->security_parameters.entity == GNUTLS_SERVER) { + /* algorithm was not selected + */ + if ( gnutls_get_auth_info_type( state) != GNUTLS_SRP) + return 0; + if (data_size > 0) { - state->gnutls_key->auth_info = gnutls_calloc(1, sizeof(SRP_SERVER_AUTH_INFO)); + if ( state->gnutls_key->auth_info == NULL) + state->gnutls_key->auth_info = gnutls_calloc(1, sizeof(SRP_SERVER_AUTH_INFO)); + if (state->gnutls_key->auth_info==NULL) return GNUTLS_E_MEMORY_ERROR; if (sizeof( ((SRP_SERVER_AUTH_INFO)state->gnutls_key->auth_info)->username) > data_size) { |