summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2001-11-06 12:56:36 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2001-11-06 12:56:36 +0000
commit16aaced014f2c2ee19cf0d5d2c8a7168fe131070 (patch)
treec6936ae2b8796c54db76f753fa9dcbe5006ce8f2 /lib
parentd138bfd3b42780fe30830af97fc4d393c225871d (diff)
downloadgnutls-16aaced014f2c2ee19cf0d5d2c8a7168fe131070.tar.gz
corrected bug which made get_current_session, not to return the right size
of the session.
Diffstat (limited to 'lib')
-rw-r--r--lib/gnutls_session.c9
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);