summaryrefslogtreecommitdiff
path: root/server/generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/generic.c')
-rw-r--r--server/generic.c7
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;