refactor previous commit
authorLuke Howard <lukeh@padl.com>
Tue, 15 Mar 2011 09:14:55 +0000 (20:14 +1100)
committerLuke Howard <lukeh@padl.com>
Tue, 15 Mar 2011 09:14:55 +0000 (20:14 +1100)
mech_eap/inquire_name.c
mech_eap/util_attr.cpp

index e57d86e..b5963fe 100644 (file)
@@ -58,22 +58,6 @@ OM_uint32 gss_inquire_name(OM_uint32 *minor,
         return GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME;
     }
 
-    if (name_is_MN != NULL)
-        *name_is_MN = 1;
-
-    if (MN_mech != NULL && name->mechanismUsed != GSS_C_NO_OID) {
-        assert(gssEapIsConcreteMechanismOid(name->mechanismUsed));
-
-        if (!gssEapInternalizeOid(name->mechanismUsed, MN_mech)) {
-            major = duplicateOid(minor, name->mechanismUsed, MN_mech);
-            if (GSS_ERROR(major))
-                return major;
-        }
-    }
-
-    if (attrs == NULL)
-        return GSS_S_COMPLETE;
-
     GSSEAP_MUTEX_LOCK(&name->mutex);
 
     major = gssEapInquireName(minor, name, name_is_MN, MN_mech, attrs);
index 28065ac..71e32d6 100644 (file)
@@ -760,10 +760,25 @@ gss_eap_attr_ctx::composeAttributeName(unsigned int type,
 OM_uint32
 gssEapInquireName(OM_uint32 *minor,
                   gss_name_t name,
-                  int *name_is_MN GSSEAP_UNUSED,
-                  gss_OID *MN_mech GSSEAP_UNUSED,
+                  int *name_is_MN,
+                  gss_OID *MN_mech,
                   gss_buffer_set_t *attrs)
 {
+    OM_uint32 major;
+
+    if (name_is_MN != NULL)
+        *name_is_MN = 1;
+
+    if (MN_mech != NULL && name->mechanismUsed != GSS_C_NO_OID) {
+        assert(gssEapIsConcreteMechanismOid(name->mechanismUsed));
+
+        if (!gssEapInternalizeOid(name->mechanismUsed, MN_mech)) {
+            major = duplicateOid(minor, name->mechanismUsed, MN_mech);
+            if (GSS_ERROR(major))
+                return major;
+        }
+    }
+
     if (name->attrCtx == NULL) {
         *minor = GSSEAP_NO_ATTR_CONTEXT;
         return GSS_S_UNAVAILABLE;
@@ -773,13 +788,15 @@ gssEapInquireName(OM_uint32 *minor,
         return GSS_S_UNAVAILABLE;
     }
 
-    try {
-        if (!name->attrCtx->getAttributeTypes(attrs)) {
-            *minor = GSSEAP_NO_ATTR_CONTEXT;
-            return GSS_S_UNAVAILABLE;
+    if (attrs != NULL) {
+        try {
+            if (!name->attrCtx->getAttributeTypes(attrs)) {
+                *minor = GSSEAP_NO_ATTR_CONTEXT;
+                return GSS_S_UNAVAILABLE;
+            }
+        } catch (std::exception &e) {
+            return name->attrCtx->mapException(minor, e);
         }
-    } catch (std::exception &e) {
-        return name->attrCtx->mapException(minor, e);
     }
 
     return GSS_S_COMPLETE;