plug leak in previous commit
[mech_eap.orig] / inquire_attrs_for_mech.c
index 8a5cb19..8c1bf12 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, JANET(UK)
+ * Copyright (c) 2011, JANET(UK)
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * SUCH DAMAGE.
  */
 
+/*
+ * Enumerate the features supported by the GSS EAP mechanism.
+ */
+
 #include "gssapiP_eap.h"
 
 #define MA_ADD(ma, set)    do { \
@@ -53,6 +57,16 @@ gss_inquire_attrs_for_mech(OM_uint32 *minor,
 {
     OM_uint32 major, tmpMinor;
 
+    if (mech_attrs != NULL)
+        *mech_attrs = GSS_C_NO_OID_SET;
+    if (known_mech_attrs != NULL)
+        *known_mech_attrs = GSS_C_NO_OID_SET;
+
+    if (!gssEapIsConcreteMechanismOid((const gss_OID)mech_oid)) {
+        *minor = GSSEAP_WRONG_MECH;
+        return GSS_S_BAD_MECH;
+    }
+
     if (mech_attrs != NULL) {
         major = gss_create_empty_oid_set(minor, mech_attrs);
         if (GSS_ERROR(major))
@@ -114,6 +128,9 @@ gss_inquire_attrs_for_mech(OM_uint32 *minor,
 #endif
     }
 
+    major = GSS_S_COMPLETE;
+    *minor = 0;
+
 cleanup:
     if (GSS_ERROR(major)) {
         gss_release_oid_set(&tmpMinor, mech_attrs);