diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2004-06-29 09:29:10 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2004-06-29 09:29:10 +0000 |
commit | d89fa090cbd25af1f0f4eca062eaf2471929f688 (patch) | |
tree | 26ee777045f6a34fef4e9ed7adb98e88fbbf255d | |
parent | 224eb02889f9e7042233fd1d3a7496567cd2acc3 (diff) | |
download | gnutls-d89fa090cbd25af1f0f4eca062eaf2471929f688.tar.gz |
Do not free the SRP (n/g) parameters from the callback if they are the static ones defined in extra.h
-rw-r--r-- | libextra/auth_srp.h | 7 | ||||
-rw-r--r-- | libextra/auth_srp_passwd.c | 10 | ||||
-rw-r--r-- | libextra/gnutls_srp.c | 3 |
3 files changed, 17 insertions, 3 deletions
diff --git a/libextra/auth_srp.h b/libextra/auth_srp.h index bf4cd28c09..739de43166 100644 --- a/libextra/auth_srp.h +++ b/libextra/auth_srp.h @@ -37,6 +37,13 @@ typedef struct SRP_SERVER_AUTH_INFO_INT { char username[MAX_SRP_USERNAME]; } *SRP_SERVER_AUTH_INFO; +extern const gnutls_datum gnutls_srp_1024_group_prime; +extern const gnutls_datum gnutls_srp_1024_group_generator; +extern const gnutls_datum gnutls_srp_1536_group_prime; +extern const gnutls_datum gnutls_srp_1536_group_generator; +extern const gnutls_datum gnutls_srp_2048_group_prime; +extern const gnutls_datum gnutls_srp_2048_group_generator; + #ifdef ENABLE_SRP int _gnutls_proc_srp_server_hello(gnutls_session state, diff --git a/libextra/auth_srp_passwd.c b/libextra/auth_srp_passwd.c index a6586fc0fd..b18e1f26fd 100644 --- a/libextra/auth_srp_passwd.c +++ b/libextra/auth_srp_passwd.c @@ -394,10 +394,16 @@ unsigned char rnd; void _gnutls_srp_entry_free( SRP_PWD_ENTRY * entry) { _gnutls_free_datum(&entry->v); - _gnutls_free_datum(&entry->g); - _gnutls_free_datum(&entry->n); _gnutls_free_datum(&entry->salt); + if (entry->g.data != gnutls_srp_1024_group_generator.data) + _gnutls_free_datum(&entry->g); + + if (entry->n.data != gnutls_srp_1024_group_prime.data && + entry->n.data != gnutls_srp_1536_group_prime.data && + entry->n.data != gnutls_srp_2048_group_prime.data) + _gnutls_free_datum(&entry->n); + gnutls_free(entry->username); gnutls_free(entry); } diff --git a/libextra/gnutls_srp.c b/libextra/gnutls_srp.c index 2ea75ecb8b..753d1d5182 100644 --- a/libextra/gnutls_srp.c +++ b/libextra/gnutls_srp.c @@ -581,7 +581,8 @@ void gnutls_srp_server_set_select_function(gnutls_session session, * * @username contains the actual username. * The @salt, @verifier, @generator and @prime must be filled - * in using the gnutls_malloc(). + * in using the gnutls_malloc(). For convenience @prime and @generator + * may also be one of the static parameters defined in extra.h. * * In case the callback returned a negative number then gnutls will * assume that the username does not exist. |