s4:auth/gensec_gssapi: remember the expire time
authorStefan Metzmacher <metze@samba.org>
Fri, 2 Mar 2012 21:02:36 +0000 (22:02 +0100)
committerStefan Metzmacher <metze@samba.org>
Wed, 16 May 2012 06:10:09 +0000 (08:10 +0200)
metze

source4/auth/gensec/gensec_gssapi.c
source4/auth/gensec/gensec_gssapi.h

index 31964731d5ac60eb40802c4abbc06d0acfbc1c07..fedd1c831c437fd4f20208af2767077886245ff8 100644 (file)
@@ -415,6 +415,9 @@ static NTSTATUS gensec_gssapi_update(struct gensec_security *gensec_security,
        OM_uint32 min_stat2;
        gss_buffer_desc input_token, output_token;
        gss_OID gss_oid_p = NULL;
+       OM_uint32 time_rec = 0;
+       struct timeval tv;
+
        input_token.length = in.length;
        input_token.value = in.data;
 
@@ -455,7 +458,7 @@ static NTSTATUS gensec_gssapi_update(struct gensec_security *gensec_security,
                                                        &gss_oid_p,
                                                        &output_token, 
                                                        &gensec_gssapi_state->gss_got_flags, /* ret flags */
-                                                       NULL);
+                                                       &time_rec);
                        if (gss_oid_p) {
                                gensec_gssapi_state->gss_oid = gss_oid_p;
                        }
@@ -484,7 +487,7 @@ static NTSTATUS gensec_gssapi_update(struct gensec_security *gensec_security,
                                                          &gss_oid_p,
                                                          &output_token, 
                                                          &gensec_gssapi_state->gss_got_flags, 
-                                                         NULL, 
+                                                         &time_rec,
                                                          &gensec_gssapi_state->delegated_cred_handle);
                        if (gss_oid_p) {
                                gensec_gssapi_state->gss_oid = gss_oid_p;
@@ -508,6 +511,9 @@ static NTSTATUS gensec_gssapi_update(struct gensec_security *gensec_security,
                                DEBUG(5, ("gensec_gssapi: NO credentials were delegated\n"));
                        }
 
+                       tv = timeval_current_ofs(time_rec, 0);
+                       gensec_gssapi_state->expire_time = timeval_to_nttime(&tv);
+
                        /* We may have been invoked as SASL, so there
                         * is more work to do */
                        if (gensec_gssapi_state->sasl) {
index 569d787f7f1c113fdc3af065876bb3c0a4f53a95..b7429b5f48d9c199cec72ed2a9efe8a385ef7244 100644 (file)
@@ -43,6 +43,7 @@ struct gensec_gssapi_state {
 
        gss_cred_id_t delegated_cred_handle;
 
+       NTTIME expire_time;
 
        /* gensec_gssapi only */
        gss_krb5_lucid_context_v1_t *lucid;