summaryrefslogtreecommitdiff
path: root/lib/gnutls_session.c
diff options
context:
space:
mode:
authorNikos <nmav@crystal.(none)>2008-02-17 00:18:08 +0200
committerNikos <nmav@crystal.(none)>2008-02-17 00:24:15 +0200
commit5f1193a1f9e789cfc78adf9c81bd9f4c7223445f (patch)
tree50830434bc0b6ba35b32d3ae183ed83e1134121a /lib/gnutls_session.c
parent72a01a895e9f6ce92df09352961ca7ba8f8c946b (diff)
downloadgnutls-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.c12
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;
}
/**