diff options
author | Nikos <nmav@crystal.(none)> | 2008-02-17 00:18:08 +0200 |
---|---|---|
committer | Nikos <nmav@crystal.(none)> | 2008-02-17 00:24:15 +0200 |
commit | 5f1193a1f9e789cfc78adf9c81bd9f4c7223445f (patch) | |
tree | 50830434bc0b6ba35b32d3ae183ed83e1134121a /lib/gnutls_session.c | |
parent | 72a01a895e9f6ce92df09352961ca7ba8f8c946b (diff) | |
download | gnutls-5f1193a1f9e789cfc78adf9c81bd9f4c7223445f.tar.gz |
Corrected memory leaks in session resuming and DHE ciphersuites. Reported
by Daniel Stenberg.
Diffstat (limited to 'lib/gnutls_session.c')
-rw-r--r-- | lib/gnutls_session.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/gnutls_session.c b/lib/gnutls_session.c index a1cd173e61..9b2d6bcfce 100644 --- a/lib/gnutls_session.c +++ b/lib/gnutls_session.c @@ -25,6 +25,7 @@ #include "gnutls_errors.h" #include "debug.h" #include <gnutls_session_pack.h> +#include <gnutls_datum.h> /** * gnutls_session_get_data - Returns all session parameters. @@ -61,12 +62,19 @@ gnutls_session_get_data (gnutls_session_t session, *session_data_size = psession.size; if (psession.size > *session_data_size) - return GNUTLS_E_SHORT_MEMORY_BUFFER; + { + ret = GNUTLS_E_SHORT_MEMORY_BUFFER; + goto error; + } if (session_data != NULL) memcpy (session_data, psession.data, psession.size); - return 0; + ret = 0; + +error: + _gnutls_free_datum( &psession); + return ret; } /** |