diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2001-11-06 12:56:36 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2001-11-06 12:56:36 +0000 |
commit | 16aaced014f2c2ee19cf0d5d2c8a7168fe131070 (patch) | |
tree | c6936ae2b8796c54db76f753fa9dcbe5006ce8f2 | |
parent | d138bfd3b42780fe30830af97fc4d393c225871d (diff) | |
download | gnutls-16aaced014f2c2ee19cf0d5d2c8a7168fe131070.tar.gz |
corrected bug which made get_current_session, not to return the right size
of the session.
-rw-r--r-- | lib/gnutls_session.c | 9 |
1 files changed, 6 insertions, 3 deletions
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); |