r24832: In the winbind-locator recursion case, try to pick up the kdc from the
authorGünther Deschner <gd@samba.org>
Fri, 31 Aug 2007 12:18:21 +0000 (12:18 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:30:26 +0000 (12:30 -0500)
environment.

Guenther
(This used to be commit 7f42fe4e08c0899f5e8addbc5135d87af193ee68)

source3/libads/smb_krb5_locator.c

index 5f90c71a2bdd21917ad3a24509212d796fdf68ae..5de080c7baa836edd0a02938bbda2442e7e74b69 100644 (file)
@@ -335,9 +335,28 @@ krb5_error_code smb_krb5_locator_lookup(void *private_data,
                        goto failed;
                }
        } else {
-               /* FIXME: here comes code for locator being called from within
-                * winbind */
-                goto failed;
+               const char *env = NULL;
+               char *var = NULL;
+               if (asprintf(&var, "%s_%s",
+                            WINBINDD_LOCATOR_KDC_ADDRESS, realm) == -1) {
+                       goto failed;
+               }
+               env = getenv(var);
+               if (!env) {
+#ifdef DEBUG_KRB5
+                       fprintf(stderr, "[%5u]: smb_krb5_locator_lookup: "
+                               "failed to get kdc from env %s\n",
+                               (unsigned int)getpid(), var);
+#endif
+                       free(var);
+                       goto failed;
+               }
+               free(var);
+
+               kdc_name = strdup(env);
+               if (!kdc_name) {
+                       goto failed;
+               }
        }
 #ifdef DEBUG_KRB5
        fprintf(stderr, "[%5u]: smb_krb5_locator_lookup: "