Add krb5 support for the testbrowse example.
authorAndreas Schneider <anschneider@suse.de>
Mon, 23 Jun 2008 09:00:20 +0000 (11:00 +0200)
committerDerrell Lipman <derrell.lipman@unwireduniverse.com>
Mon, 23 Jun 2008 19:36:37 +0000 (15:36 -0400)
Signed-off-by: Andreas Schneider <anschneider@suse.de>
Signed-off-by: Derrell Lipman <derrell.lipman@unwireduniverse.com>
(This used to be commit 84b1ea39a4f27ebcf06a2bafed78396c7353df0e)

examples/libsmbclient/get_auth_data_fn.h
examples/libsmbclient/testbrowse.c

index b1d36c8beacd4ecadc63075f2d8719cd5c7dd6c8..6b91c973375a08d5b50e88c1f306c7240daf49ef 100644 (file)
@@ -1,3 +1,5 @@
+#include <stdlib.h>
+
 static void
 get_auth_data_fn(const char * pServer,
                  const char * pShare,
@@ -15,6 +17,8 @@ get_auth_data_fn(const char * pServer,
     char            username[256] = { '\0' };
     char            password[256] = { '\0' };
 
+    static int krb5_set = 1;
+
     if (strcmp(server, pServer) == 0 &&
         strcmp(share, pShare) == 0 &&
         *workgroup != '\0' &&
@@ -25,7 +29,12 @@ get_auth_data_fn(const char * pServer,
         strncpy(pPassword, password, maxLenPassword - 1);
         return;
     }
-    
+
+    if (krb5_set && getenv("KRB5CCNAME")) {
+      krb5_set = 0;
+      return;
+    }
+
     fprintf(stdout, "Workgroup: [%s] ", pWorkgroup);
     fgets(temp, sizeof(temp), stdin);
     
@@ -68,4 +77,6 @@ get_auth_data_fn(const char * pServer,
     strncpy(workgroup, pWorkgroup, sizeof(workgroup) - 1);
     strncpy(username, pUsername, sizeof(username) - 1);
     strncpy(password, pPassword, sizeof(password) - 1);
+
+    krb5_set = 1;
 }
index a7eda365af9a53a82f903aff47895f43f81c8d7f..a6e6395078f0b98124e75d14d33227600bd7cd30 100644 (file)
@@ -117,6 +117,9 @@ main(int argc, char * argv[])
         smbc_setFunctionAuthData(context, get_auth_data_fn);
     }
 
+    smbc_setOptionUseKerberos(context, 1);
+    smbc_setOptionFallbackAfterKerberos(context, 1);
+
     /* If we've been asked to log to stderr instead of stdout, ... */
     if (debug_stderr) {
         /* ... then set the option to do so */