From 16aaced014f2c2ee19cf0d5d2c8a7168fe131070 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Tue, 6 Nov 2001 12:56:36 +0000 Subject: corrected bug which made get_current_session, not to return the right size of the session. --- lib/gnutls_session.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/gnutls_session.c b/lib/gnutls_session.c index d7705c2142..f7bce5ea8e 100644 --- a/lib/gnutls_session.c +++ b/lib/gnutls_session.c @@ -21,6 +21,7 @@ #include "gnutls_errors.h" #include "debug.h" +#define SESSION_SIZE sizeof(SecurityParameters) + sizeof(state->gnutls_key->auth_info_size) + state->gnutls_key->auth_info_size /** * gnutls_get_current_session - Returns all session parameters. @@ -37,15 +38,17 @@ **/ int gnutls_get_current_session( GNUTLS_STATE state, opaque* session, int *session_size) { - *session_size = sizeof(SecurityParameters) + state->gnutls_key->auth_info_size; - + if (*session_size < SESSION_SIZE) { + *session_size = SESSION_SIZE; + session = NULL; /* return with the new session_size value */ + } + if (state->gnutls_internals.resumable==RESUME_FALSE) return GNUTLS_E_INVALID_SESSION; /* just return the session size */ if (session==NULL) { return 0; } memcpy( session, &state->security_parameters, sizeof(SecurityParameters)); -/* memcpy( &session[sizeof(SecurityParameters)], state->gnutls_key->auth_info, state->gnutls_key->auth_info_size);*/ memcpy( &session[sizeof(SecurityParameters)], &state->gnutls_key->auth_info_size, sizeof(state->gnutls_key->auth_info_size)); memcpy( &session[sizeof(state->gnutls_key->auth_info_size)+sizeof(SecurityParameters)], state->gnutls_key->auth_info, state->gnutls_key->auth_info_size); -- cgit v1.2.1