]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
gnutls_session_get_data: fix possible buffer overflow
authorAlban Crequy <alban.crequy@collabora.co.uk>
Mon, 7 Nov 2011 18:51:27 +0000 (18:51 +0000)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Mon, 7 Nov 2011 20:17:01 +0000 (21:17 +0100)
The test to avoid the buffer overflow was always false because
session_data_size was set at the wrong place. This problem has been introduced
by this commit:

|commit ad4ed44c65e753e6d3a00104c049dd81826ccbf3
|Author: Nikos Mavrogiannopoulos <nmav@gnutls.org>
|Date:   Mon Nov 7 22:24:48 2005 +0000
|
|    This is the initial commit in the 1.3 branch. Ported from the PSK branch:
|    * PSK ciphersuites have been added.
|    * The session resumption data are now system independent.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
lib/gnutls_session.c

index 6a37f13c6dcb0d96a1d3c261befd1dbefbd99e5a..4ab1ef5b3bd69521ea8c6182d7c1efa303d4a78b 100644 (file)
@@ -65,13 +65,13 @@ gnutls_session_get_data (gnutls_session_t session,
       gnutls_assert ();
       return ret;
     }
-  *session_data_size = psession.size;
 
   if (psession.size > *session_data_size)
     {
       ret = GNUTLS_E_SHORT_MEMORY_BUFFER;
       goto error;
     }
+  *session_data_size = psession.size;
 
   if (session_data != NULL)
     memcpy (session_data, psession.data, psession.size);