]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Some fixes in session resumption and prototypes. Based on patches and suggestions...
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 30 Nov 2005 12:01:45 +0000 (12:01 +0000)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 30 Nov 2005 12:01:45 +0000 (12:01 +0000)
includes/gnutls/gnutls.h.in
lib/gnutls_session.c
lib/gnutls_session_pack.c

index b10eec05ed09fd4cf63e8cc998b43c13150f7650..8b60c19655541efa70759efdd98fa23e8fcdfdac 100644 (file)
@@ -326,6 +326,8 @@ const char *gnutls_protocol_get_name(gnutls_protocol_t version);
  */
 int gnutls_session_set_data( gnutls_session_t session, const void* session_data, size_t session_data_size);
 int gnutls_session_get_data( gnutls_session_t session, void* session_data, size_t *session_data_size);
+int gnutls_session_get_data2( gnutls_session_t session, gnutls_datum* data);
+
 /* returns the session ID */
 #define GNUTLS_MAX_SESSION_ID 32
 int gnutls_session_get_id( gnutls_session_t session, void* session_id, size_t *session_id_size);
@@ -450,11 +452,11 @@ typedef void (*gnutls_free_function)(void*);
 typedef void* (*gnutls_realloc_function)(void*, size_t);
 
 extern void
-gnutls_global_set_mem_functions(gnutls_alloc_function alloc_func,
-                               gnutls_alloc_function secure_alloc_func,
-                               gnutls_is_secure_function is_secure_func,
-                               gnutls_realloc_function realloc_func,
-                               gnutls_free_function free_func);
+gnutls_global_set_mem_functions(gnutls_alloc_function gt_alloc_func,
+                               gnutls_alloc_function gt_secure_alloc_func,
+                               gnutls_is_secure_function gt_is_secure_func,
+                               gnutls_realloc_function gt_realloc_func,
+                               gnutls_free_function gt_free_func);
 
 /* For use in callbacks */
 extern gnutls_alloc_function gnutls_malloc;
index 7a285e29a5100de816d73416ddce55ac15c59d08..edded342151ee6eeb6eb9b7588902b9f937babfc 100644 (file)
@@ -120,11 +120,14 @@ gnutls_session_get_data2 (gnutls_session_t session, gnutls_datum * data)
   *
   * Session id is some data set by the server, that identify the current session. 
   * In TLS 1.0 and SSL 3.0 session id is always less than 32 bytes.
+  *
+  * Returns zero on success.
   **/
 int
 gnutls_session_get_id (gnutls_session_t session,
                       void *session_id, size_t * session_id_size)
 {
+size_t given_session_id_size = *session_id_size;
 
   *session_id_size = session->security_parameters.session_id_size;
 
@@ -133,6 +136,12 @@ gnutls_session_get_id (gnutls_session_t session,
     {
       return 0;
     }
+
+  if ( given_session_id_size < session->security_parameters.session_id_size)
+    {
+       return GNUTLS_E_SHORT_MEMORY_BUFFER;
+    }
+
   memcpy (session_id, &session->security_parameters.session_id,
          *session_id_size);
 
index ecf24188d771516bc1df1e8d0c91fa1ba99a6e25..5fc48fefb72a86a902399a45de10dd9fa83e701f 100644 (file)
@@ -269,6 +269,8 @@ pack_certificate_auth_info (gnutls_session_t session,
 
   if (info)
     {
+      cert_size = 0;
+      
       for (i = 0; i < info->ncerts; i++)
        cert_size += info->raw_certificate_list[i].size;