diff options
Diffstat (limited to 'server/generic.c')
-rw-r--r-- | server/generic.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/server/generic.c b/server/generic.c index 74134b5..cc0f0e3 100644 --- a/server/generic.c +++ b/server/generic.c @@ -19,6 +19,8 @@ #include <portable/system.h> #include <portable/uio.h> +#include <time.h> + #include <server/internal.h> #include <util/messages.h> #include <util/protocol.h> @@ -45,7 +47,7 @@ server_new_client(int fd, gss_cred_id_t creds) gss_OID doid; OM_uint32 major = 0; OM_uint32 minor = 0; - OM_uint32 acc_minor; + OM_uint32 acc_minor, time_rec; int flags, status; static const OM_uint32 req_gss_flags = (GSS_C_MUTUAL_FLAG | GSS_C_CONF_FLAG | GSS_C_INTEG_FLAG); @@ -116,7 +118,7 @@ server_new_client(int fd, gss_cred_id_t creds) (unsigned long) recv_tok.length); major = gss_accept_sec_context(&acc_minor, &client->context, creds, &recv_tok, GSS_C_NO_CHANNEL_BINDINGS, &name, &doid, - &send_tok, &client->flags, NULL, NULL); + &send_tok, &client->flags, &time_rec, NULL); free(recv_tok.value); /* Send back a token if we need to. */ @@ -160,6 +162,7 @@ server_new_client(int fd, gss_cred_id_t creds) } gss_release_name(&minor, &name); client->user = xstrndup(name_buf.value, name_buf.length); + client->expires = time(NULL) + time_rec; gss_release_buffer(&minor, &name_buf); return client; |