]> andersk Git - moira.git/blobdiff - clients/lib/member.c
Build without krb4 if it's unavailable.
[moira.git] / clients / lib / member.c
index b7603b2bbb6658e694aee8d7c5a8e1e6860498ee..6d643806f93e08cee8ecd1c17307107f8c5bf326 100644 (file)
 #include <string.h>
 #include <ctype.h>
 
-#include <krb.h>
+#include <krb5.h>
 
 RCSID("$Header$");
 
-static char default_realm[REALM_SZ];
-
 int mrcl_validate_string_member(char *str)
 {
   char *p, *lname, *ret;
@@ -69,6 +67,9 @@ int mrcl_validate_string_member(char *str)
 int mrcl_validate_kerberos_member(char *str, char **ret)
 {
   char *p;
+  int code = 0;
+  krb5_context context = NULL;
+  char *default_realm = NULL;
 
   mrcl_clear_message();
 
@@ -97,14 +98,27 @@ int mrcl_validate_kerberos_member(char *str, char **ret)
          return MRCL_SUCCESS;
        }
 
-      if (!*default_realm)
-       krb_get_lrealm(default_realm, 1);
+      code = krb5_init_context(&context);
+      if (!code)
+        goto out;
+
+      code = krb5_get_default_realm(context, &default_realm);
+      if (!code)
+        goto out;
 
       *ret = malloc(strlen(str) + strlen(default_realm) + 2);
       sprintf(*ret, "%s@%s", str, default_realm);
 
       mrcl_set_message("Warning: default realm \"%s\" added to principal "
                       "\"%s\"", default_realm, str);
+
+    out:
+      if (default_realm)
+        free(default_realm);
+      if (context)
+        krb5_free_context(context);
+      if (!code)
+        return code;
       return MRCL_SUCCESS;
     }
 
This page took 0.074876 seconds and 4 git commands to generate.