svn commit: lorikeet r521 - in trunk/mod_ntlm_winbind: .

abartlet at samba.org abartlet at samba.org
Tue Mar 28 20:59:50 GMT 2006


Author: abartlet
Date: 2006-03-28 20:59:49 +0000 (Tue, 28 Mar 2006)
New Revision: 521

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=lorikeet&rev=521

Log:
Another patch from Ronan Waide <waider at waider.ie>.  

In adding plaintext support, we lost NTLM support.

Andrew Bartlett

Modified:
   trunk/mod_ntlm_winbind/mod_ntlm_winbind.c


Changeset:
Modified: trunk/mod_ntlm_winbind/mod_ntlm_winbind.c
===================================================================
--- trunk/mod_ntlm_winbind/mod_ntlm_winbind.c	2006-03-28 10:42:08 UTC (rev 520)
+++ trunk/mod_ntlm_winbind/mod_ntlm_winbind.c	2006-03-28 20:59:49 UTC (rev 521)
@@ -469,7 +469,7 @@
 }
 
 /* get the current request's auth helper or fork one */
-static int get_auth_helper( request_rec *r, ntlm_config_rec *crec, struct _ntlm_auth_helper *auth_helper, char *cmd, void (*cleanup)(void *)) {
+static struct _ntlm_auth_helper *get_auth_helper( request_rec *r, struct _ntlm_auth_helper *auth_helper, char *cmd, void (*cleanup)(void *)) {
     ntlm_context_t *ctxt = get_connection_context( r->connection );
 #ifdef APACHE2
     apr_procattr_t *attr;
@@ -489,11 +489,11 @@
         auth_helper->helper_pid = 0;
 
 #ifdef APACHE2
-        apr_tokenize_to_argv( crec->ntlm_plaintext_helper, &argv_out, pool );
+        apr_tokenize_to_argv( cmd, &argv_out, pool );
 #else
         ap_register_cleanup( pool, auth_helper, cleanup, ap_null_cleanup );
 #endif
-        cld.argv0 = crec->ntlm_plaintext_helper;
+        cld.argv0 = cmd;
         cld.r = r;
         ctxt->ntlm_plaintext_helper = auth_helper;
 
@@ -504,7 +504,7 @@
         auth_helper->proc = (apr_proc_t *)apr_pcalloc(pool, sizeof(apr_proc_t)) ;
         if ( apr_proc_create( auth_helper->proc, argv_out[0], (const char * const *)argv_out, NULL, attr, pool ) != APR_SUCCESS ) {
             RERROR( errno, "couldn't spawn child ntlm helper process: %s", argv_out[0]);
-            return HTTP_INTERNAL_SERVER_ERROR;
+            return NULL;
         }
 #else
         auth_helper->helper_pid = ap_bspawn_child(pool, helper_child,
@@ -515,12 +515,12 @@
 
         if (auth_helper->helper_pid == -1) {
             RERROR( errno, "couldn't spawn child ntlm helper process: %s", cld.argv0);
-            return HTTP_INTERNAL_SERVER_ERROR;
+            return NULL;
         }
 #endif
     }
 
-    return OK;
+    return auth_helper;
 }
 
 /* Call winbind to authenticate a (user, password)
@@ -533,14 +533,13 @@
     char args_from_helper[HUGE_STRING_LEN];
     unsigned int bytes_written;
     int bytes_read;
-    int retval;
 #ifdef APACHE2
     int exit;
     apr_exit_why_e why;
 #endif
 
-    if (( retval = get_auth_helper( r, crec, ctxt->ntlm_plaintext_helper, crec->ntlm_plaintext_helper, CLEANUP(cleanup_ntlm_plaintext_helper))) != OK ) {
-        return retval;
+    if (( ctxt->ntlm_plaintext_helper = get_auth_helper( r, ctxt->ntlm_plaintext_helper, crec->ntlm_plaintext_helper, CLEANUP(cleanup_ntlm_plaintext_helper))) == NULL ) {
+        return HTTP_INTERNAL_SERVER_ERROR;
     }
 
     if ( ctxt->connected_user_authenticated == NULL ) {
@@ -671,26 +670,24 @@
 #endif
     unsigned int bytes_written;
     int bytes_read;
-    int retval;
     struct _ntlm_auth_helper *auth_helper;
 
     /* If this is the first request with this connection, then create
      * a ntlm_auth_helper entry for it. It will be cleaned up when the
      * connection is dropped */
 
-    retval = HTTP_INTERNAL_SERVER_ERROR;
     if (strcmp(auth_type, NEGOTIATE_AUTH_NAME) == 0) {
-        retval = get_auth_helper( r, crec, ctxt->negotiate_ntlm_auth_helper, crec->negotiate_ntlm_auth_helper, CLEANUP(cleanup_negotiate_ntlm_auth_helper));
-        auth_helper = ctxt->negotiate_ntlm_auth_helper;
+        auth_helper = get_auth_helper( r, ctxt->negotiate_ntlm_auth_helper, crec->negotiate_ntlm_auth_helper, CLEANUP(cleanup_negotiate_ntlm_auth_helper));
+        ctxt->negotiate_ntlm_auth_helper = auth_helper;
     } else if (strcmp(auth_type, NTLM_AUTH_NAME) == 0) {
-        retval = get_auth_helper( r, crec, ctxt->ntlm_auth_helper, crec->ntlm_auth_helper, CLEANUP(cleanup_ntlm_auth_helper));
-        auth_helper = ctxt->ntlm_auth_helper;
+        auth_helper = get_auth_helper( r, ctxt->ntlm_auth_helper, crec->ntlm_auth_helper, CLEANUP(cleanup_ntlm_auth_helper));
+        ctxt->ntlm_auth_helper = auth_helper;
     } else {
         auth_helper = NULL;
     }
 
-    if ( retval != OK ) {
-        return retval;
+    if ( auth_helper == NULL ) {
+        return HTTP_INTERNAL_SERVER_ERROR;
     }
 
     if ( ctxt->connected_user_authenticated == NULL ) {



More information about the samba-cvs mailing list