gssEapCreateAttrContext should not mutate context fields directly
authorLuke Howard <lukeh@padl.com>
Tue, 26 Oct 2010 23:22:36 +0000 (10:22 +1100)
committerLuke Howard <lukeh@padl.com>
Tue, 26 Oct 2010 23:22:36 +0000 (10:22 +1100)
accept_sec_context.c
util_attr.cpp
util_attr.h

index edd2a4d..260b233 100644 (file)
@@ -108,7 +108,8 @@ acceptReadyEap(OM_uint32 *minor, gss_ctx_id_t ctx, gss_cred_id_t cred)
         return major;
 
     major = gssEapCreateAttrContext(minor, cred, ctx,
-                                    &ctx->initiatorName->attrCtx);
+                                    &ctx->initiatorName->attrCtx,
+                                    &ctx->expiryTime);
     if (GSS_ERROR(major))
         return major;
 
index e5fb568..52da7cf 100644 (file)
@@ -1040,15 +1040,14 @@ OM_uint32
 gssEapCreateAttrContext(OM_uint32 *minor,
                         gss_cred_id_t gssCred,
                         gss_ctx_id_t gssCtx,
-                        struct gss_eap_attr_ctx **pAttrContext)
+                        struct gss_eap_attr_ctx **pAttrContext,
+                        time_t *pExpiryTime)
 {
     gss_eap_attr_ctx *ctx;
     OM_uint32 major;
 
     assert(gssCtx != GSS_C_NO_CONTEXT);
 
-    *pAttrContext = NULL;
-
     major = gssEapAttrProvidersInit(minor);
     if (GSS_ERROR(major))
         return major;
@@ -1066,9 +1065,8 @@ gssEapCreateAttrContext(OM_uint32 *minor,
         return major;
     }
 
-    gssCtx->expiryTime = ctx->getExpiryTime();
-
     *pAttrContext = ctx;
+    *pExpiryTime = ctx->getExpiryTime();
 
     *minor = 0;
     return GSS_S_COMPLETE;
index 5dfc4ce..e55e9a9 100644 (file)
@@ -274,7 +274,8 @@ OM_uint32
 gssEapCreateAttrContext(OM_uint32 *minor,
                         gss_cred_id_t acceptorCred,
                         gss_ctx_id_t acceptorCtx,
-                        struct gss_eap_attr_ctx **pAttrCtx);
+                        struct gss_eap_attr_ctx **pAttrCtx,
+                        time_t *pExpiryTime);
 
 OM_uint32
 gssEapInquireName(OM_uint32 *minor,