make SASL arguments optional
authorLuke Howard <lukeh@padl.com>
Sun, 26 Sep 2010 08:23:42 +0000 (10:23 +0200)
committerLuke Howard <lukeh@padl.com>
Sun, 26 Sep 2010 08:23:42 +0000 (10:23 +0200)
inquire_mech_for_saslname.c
util_name.c

index 528b86c..8c42be0 100644 (file)
@@ -53,23 +53,28 @@ gss_inquire_saslname_for_mech(OM_uint32 *minor,
     if (GSS_ERROR(major))
         return major;
 
-    if (krb5_enctype_to_name(etype, 0, &krbBuf[4], sizeof(krbBuf) - 4) == 0) {
+    if (mech_name != GSS_C_NO_BUFFER &&
+        krb5_enctype_to_name(etype, 0, &krbBuf[4], sizeof(krbBuf) - 4) == 0) {
         major = makeStringBuffer(minor, krbBuf, mech_name);
         if (GSS_ERROR(major))
             return major;
     }
 
-    major = makeStringBuffer(minor,
-                             "Extensible Authentication Protocol GSS-API Mechanism",
-                             mech_description);
-    if (GSS_ERROR(major))
-        return major;
+    if (mech_description != GSS_C_NO_BUFFER) {
+        major = makeStringBuffer(minor,
+                                 "Extensible Authentication Protocol GSS-API Mechanism",
+                                 mech_description);
+        if (GSS_ERROR(major))
+            return major;
+    }
 
-    name = gssEapOidToSaslName(mech);
-    if (name == GSS_C_NO_BUFFER)
-        major = GSS_S_BAD_MECH;
-    else
-        major = duplicateBuffer(minor, name, sasl_mech_name);
+    if (sasl_mech_name != GSS_C_NO_BUFFER) {
+        name = gssEapOidToSaslName(mech);
+        if (name == GSS_C_NO_BUFFER)
+            major = GSS_S_BAD_MECH;
+        else
+            major = duplicateBuffer(minor, name, sasl_mech_name);
+    }
 
     return major;
 }
index 6063e7e..c41d9f7 100644 (file)
@@ -338,7 +338,7 @@ gssEapImportName(OM_uint32 *minor,
         oidEqual(nameType, GSS_EAP_NT_PRINCIPAL_NAME))
         major = importUserName(minor, nameBuffer, name);
     else if (oidEqual(nameType, GSS_C_NT_HOSTBASED_SERVICE) ||
-               oidEqual(nameType, GSS_C_NT_HOSTBASED_SERVICE_X))
+             oidEqual(nameType, GSS_C_NT_HOSTBASED_SERVICE_X))
         major = importServiceName(minor, nameBuffer, name);
     else if (oidEqual(nameType, GSS_C_NT_EXPORT_NAME))
         major = gssEapImportNameInternal(minor, nameBuffer, name,