From: Nikos Mavrogiannopoulos Date: Tue, 6 Nov 2001 12:56:36 +0000 (+0000) Subject: corrected bug which made get_current_session, not to return the right size X-Git-Tag: gnutls_0_2_11~25 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=16aaced014f2c2ee19cf0d5d2c8a7168fe131070;p=thirdparty%2Fgnutls.git corrected bug which made get_current_session, not to return the right size of the session. --- 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);