[SCM] Samba Shared Repository - branch v3-5-stable updated

Karolin Seeger kseeger at samba.org
Tue Jan 26 07:27:01 MST 2010


The branch, v3-5-stable has been updated
       via  6e42522... WHATSNEW: Update changes.
       via  ff7027a... s3-docs: Fix version in man ldbrename.
       via  a4e7412... s3: Enable use of ccache by default for libsmbclient
       via  b244e3e... s3-libsmbclient: Add smbc_setOptionUseCCache()
       via  ce033a7... s3: Add --use-ccache to net (cherry picked from commit af32a49c7d8803f597e184f1361e795f179b809f)
       via  b2c393a... s3: add libnetapi_set_use_ccache() (cherry picked from commit b99ab82ebab598b45eb6729498c9e67b195e698d)
       via  e2e48df... s3: Fix a bug in net's use of popt
       via  a97d76b... s3: Enable -C in rpcclient (cherry picked from commit 2aca69ef0df02e655125d9db31e1f0144d21a144)
       via  a361992... s3: Add CLI_FULL_CONNECTION_USE_CCACHE (cherry picked from commit 36854ea0aa260dfe23f77825e942f5b3905d396d)
       via  f3428ec... s3: Use -C in smbclient
       via  1fcfa0b... s3: Add -C (--use-ccache) to popt_common_credentials (cherry picked from commit 58ebc50663a299e16684aa24cfae95954d5a14f0)
       via  bef877a... s3: Add ccache use to cli_session_setup_ntlmssp (cherry picked from commit e06abe412f78b58f36998037637d1b3478fdc477)
       via  7928241... s3: Add NTLMSSP_FEATURE_CCACHE
       via  dc3e7f7... libwbclient: Actually implement wbcCredentialCache() (cherry picked from commit 7ab798d141bf715808fa0941f19422069e65fa0e)
       via  2643ff4... s3: Add the session key to the ccache_ntlm_auth response (cherry picked from commit 99f6f322ae5aa13596c5b0f1a6e600b6fec48896)
       via  b444541... s3: Add wbinfo --ccache-save
      from  43c03a6... lib/popt: Fix typo in README.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-stable


- Log -----------------------------------------------------------------
commit 6e4252217a6f239a64afc5103d6416c402e5e10f
Author: Karolin Seeger <kseeger at samba.org>
Date:   Tue Jan 26 14:58:45 2010 +0100

    WHATSNEW: Update changes.
    
    Karolin
    (cherry picked from commit 048adb50d83a3928820e6607451d582696cd7cc7)

commit ff7027abcba3bfc69f068da2a8c3b0792c72e870
Author: Karolin Seeger <kseeger at samba.org>
Date:   Tue Jan 26 14:19:31 2010 +0100

    s3-docs: Fix version in man ldbrename.
    
    Karolin
    (cherry picked from commit 77bb3f2a5596c84e99b9006d2a31a752c68ab34a)

commit a4e7412578752a03a10d5c6a95221cba8c7bb077
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Jan 26 10:51:32 2010 +0100

    s3: Enable use of ccache by default for libsmbclient
    
    Disable this by setting the environment variable LIBSMBCLIENT_NO_CCACHE, which
    has the advantage over an smb.conf option to be easily settable per
    application.
    (cherry picked from commit 0e8552abc1b48e62aaac3cab7c13c8dea60c9f9b)

commit b244e3ec83d508c4515dd0987c2880117ae9119f
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 19:24:10 2010 +0100

    s3-libsmbclient: Add smbc_setOptionUseCCache()
    
    Can we enable this by default? This would be a change in behaviour, but this
    feature is just too cool for everyone to catch up in the apps.
    
    The patch would be
    (cherry picked from commit 9698c214624678125551f2d65b95deb29ea72b64)

commit ce033a724aff9bf587e8b3ba02e3010b565f3912
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 18:50:48 2010 +0100

    s3: Add --use-ccache to net
    (cherry picked from commit af32a49c7d8803f597e184f1361e795f179b809f)

commit b2c393a4bd4c9d8a8c2f5007fa287ca0a97a0919
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 18:50:31 2010 +0100

    s3: add libnetapi_set_use_ccache()
    (cherry picked from commit b99ab82ebab598b45eb6729498c9e67b195e698d)

commit e2e48df6dc9efb245f4c16d46f487a065d806d99
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 18:51:58 2010 +0100

    s3: Fix a bug in net's use of popt
    
    In order to add --use-ccache to net, I added another "bool opt_ccache;" to
    struct net_context. popt did not like this, it took a while to figure out why.
    Popt has the lines
    
        /* XXX Check alignment, may fail on funky platforms. */
        if (arg == NULL || (((unsigned long)arg) & (sizeof(*arg)-1)))
            return POPT_ERROR_NULLARG;
    
    The "bool opt_ccache;" was not aligned anymore...
    (cherry picked from commit 340277382518c62e23faae4af69a9c5c32b96af2)

commit a97d76b1515be57746b22413ec4bc1533feee71d
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 17:35:04 2010 +0100

    s3: Enable -C in rpcclient
    (cherry picked from commit 2aca69ef0df02e655125d9db31e1f0144d21a144)

commit a3619926795f2bb139e9b9a3c9c4ceb40858d38e
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 17:34:13 2010 +0100

    s3: Add CLI_FULL_CONNECTION_USE_CCACHE
    (cherry picked from commit 36854ea0aa260dfe23f77825e942f5b3905d396d)

commit f3428ecb6b3c640e703822592cb369c4bbe4d8fa
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 17:08:56 2010 +0100

    s3: Use -C in smbclient
    
    $ bin/wbinfo --ccache-save=w2k3ad\\vl%Password
    saving creds succeeded
    $ bin/smbclient //192.168.42.160/tmp -Uvl -N -C -W w2k3ad
    OS=[Windows Server 2003 R2 3790 Service Pack 2] Server=[Windows Server 2003 R2 5.2]
    smb: \>
    $ bin/wbinfo --ccache-save=w2k3ad\\vl%WrongPassword
    saving creds succeeded
    $ bin/smbclient //192.168.42.160/tmp -Uvl -N -C -W w2k3ad
    Anonymous login successful
    Domain=[W2K3AD] OS=[Windows Server 2003 R2 3790 Service Pack 2] Server=[Windows Server 2003 R2 5.2]
    tree connect failed: NT_STATUS_ACCESS_DENIED
    $
    (cherry picked from commit 5e91f9eb10404a1df470fd87fc8c1cae5ea7b70c)

commit 1fcfa0b772de6da2584b30928d65b8397f0c33ea
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 17:07:24 2010 +0100

    s3: Add -C (--use-ccache) to popt_common_credentials
    (cherry picked from commit 58ebc50663a299e16684aa24cfae95954d5a14f0)

commit bef877ab24db8fecd723620023626be50a2981bb
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 16:50:46 2010 +0100

    s3: Add ccache use to cli_session_setup_ntlmssp
    (cherry picked from commit e06abe412f78b58f36998037637d1b3478fdc477)

commit 792824136c7a7cbdcd77a5b814c4fa693031848f
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 16:47:24 2010 +0100

    s3: Add NTLMSSP_FEATURE_CCACHE
    
    Uses the winbind ccache to do authentication if asked to do so
    (cherry picked from commit 8e96e1f49867d1260aa291b688fbb58e01ef2009)

commit dc3e7f7fc88a7fda6532301c5ac29bbd19297585
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 16:44:15 2010 +0100

    libwbclient: Actually implement wbcCredentialCache()
    (cherry picked from commit 7ab798d141bf715808fa0941f19422069e65fa0e)

commit 2643ff4bb63005010a56712d77ca70c245c2aa7d
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 24 16:41:30 2010 +0100

    s3: Add the session key to the ccache_ntlm_auth response
    (cherry picked from commit 99f6f322ae5aa13596c5b0f1a6e600b6fec48896)

commit b444541c2e3f3901dd1c420ebb82d7295fa559af
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Jan 9 20:20:36 2010 +0100

    s3: Add wbinfo --ccache-save
    
    With this command you can give winbind your password for later use by
    the automatic ntlm_auth
    (cherry picked from commit 1ae7b074113497342f0b85223df270bdee0b07a0)

-----------------------------------------------------------------------

Summary of changes:
 WHATSNEW.txt                              |   11 ++
 docs-xml/manpages-3/ldbrename.1.xml       |    2 +-
 nsswitch/libwbclient/wbc_pam.c            |  148 ++++++++++++++++++++++++++++-
 nsswitch/libwbclient/wbclient.h           |   10 ++
 nsswitch/wbinfo.c                         |   46 +++++++++
 nsswitch/winbind_struct_protocol.h        |   11 ++-
 source3/Makefile.in                       |   52 +++++++----
 source3/include/client.h                  |    2 +
 source3/include/libsmbclient.h            |   11 ++
 source3/include/ntlmssp.h                 |    2 +
 source3/include/popt_common.h             |    1 +
 source3/include/proto.h                   |    3 +
 source3/lib/netapi/cm.c                   |    4 +
 source3/lib/netapi/netapi.c               |    6 +
 source3/lib/netapi/netapi.h               |    6 +
 source3/lib/popt_common.c                 |    7 +-
 source3/lib/util.c                        |   10 ++
 source3/libsmb/cliconnect.c               |    6 +
 source3/libsmb/clidfs.c                   |    1 +
 source3/libsmb/libsmb_context.c           |   17 ++++
 source3/libsmb/libsmb_server.c            |    7 ++
 source3/libsmb/libsmb_setget.c            |   18 ++++
 source3/libsmb/ntlmssp.c                  |   60 ++++++++++++
 source3/rpcclient/rpcclient.c             |    3 +
 source3/utils/net.c                       |    1 +
 source3/utils/net.h                       |    3 +-
 source3/utils/net_rpc.c                   |    3 +
 source3/utils/net_util.c                  |    4 +
 source3/winbindd/winbindd.c               |    1 +
 source3/winbindd/winbindd_ccache_access.c |   93 +++++++++++++++++-
 source3/winbindd/winbindd_domain.c        |    4 +
 source3/winbindd/winbindd_proto.h         |    3 +
 32 files changed, 530 insertions(+), 26 deletions(-)


Changeset truncated at 500 lines:

diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index ac82c51..1a30e15 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -13,6 +13,7 @@ Major enhancements in Samba 3.5.0 include:
 General changes:
 o Add support for full Windows timestamp resolution
 o The Using Samba HTML book has been removed.
+o 'net', 'smbclient' and libsmbclient can use credentials cached by Winbind.
 
 Protocol changes:
 o Experimental implementation of SMB2
@@ -38,6 +39,12 @@ kernel (2.6.22 and higher) and the glibc (2.6 and higher).
 The Using Samba HTML book has been removed from the Samba tarball.
 It is still available at http://www.samba.org/samba/docs/using_samba/toc.html.
 
+Samba client tools like 'net', 'smbclient' and libsmbclient can use the user
+credentials cached by Winbind at logon time. This is very useful e.g. when
+connecting to a Samba server using Nautilus without re-entering username and
+password. This feature is enabled by default and can be disabled per application
+by setting the LIBSMBCLIENT_NO_CCACHE environment variable.
+
 Protocol changes
 ================
 
@@ -105,6 +112,8 @@ o   Björn Jacke <bj at sernet.de>
 o   Volker Lendecke <vl at samba.org>
     * Major internal refactoring of the Winbind daemon.
     * Make Winbind asynchronous.
+    * Make 'net', 'smbclient' and libsmbclient use the logon credentials cached
+      by Winbind.
 
 
 o   Stefan Metzmacher <metze at samba.org>
@@ -159,6 +168,8 @@ o   Volker Lendecke <vl at samba.org>
     * BUG 7027: Fix a segfault in winbindd_dual_ccache_ntlm_auth().
     * BUG 7037: Fix a Winbind segfault in "trusted_domains".
     * BUG 7046: Fix libsmbclient crash against OpenSolaris CIFS server.
+    * BUG 7062: Make 'net', 'smbclient' and libsmbclient use the logon
+      credentials cached by Winbind.
     * Lock down some srvsvc calls according to what w2k3 seems to do.
 
 
diff --git a/docs-xml/manpages-3/ldbrename.1.xml b/docs-xml/manpages-3/ldbrename.1.xml
index 6a134f4..1a89bae 100644
--- a/docs-xml/manpages-3/ldbrename.1.xml
+++ b/docs-xml/manpages-3/ldbrename.1.xml
@@ -7,7 +7,7 @@
 	<manvolnum>1</manvolnum>
         <refmiscinfo class="source">Samba</refmiscinfo>
         <refmiscinfo class="manual">User Commands</refmiscinfo>
-        <refmiscinfo class="version">3.6</refmiscinfo>
+        <refmiscinfo class="version">3.5</refmiscinfo>
 </refmeta>
 
 
diff --git a/nsswitch/libwbclient/wbc_pam.c b/nsswitch/libwbclient/wbc_pam.c
index 00863a0..4b18727 100644
--- a/nsswitch/libwbclient/wbc_pam.c
+++ b/nsswitch/libwbclient/wbc_pam.c
@@ -1118,5 +1118,151 @@ wbcErr wbcCredentialCache(struct wbcCredentialCacheParams *params,
                           struct wbcCredentialCacheInfo **info,
                           struct wbcAuthErrorInfo **error)
 {
-	return WBC_ERR_NOT_IMPLEMENTED;
+	wbcErr status = WBC_ERR_UNKNOWN_FAILURE;
+	struct wbcCredentialCacheInfo *result = NULL;
+	struct winbindd_request request;
+	struct winbindd_response response;
+	struct wbcNamedBlob *initial_blob = NULL;
+	struct wbcNamedBlob *challenge_blob = NULL;
+	int i;
+
+	ZERO_STRUCT(request);
+	ZERO_STRUCT(response);
+
+	if (info != NULL) {
+		*info = NULL;
+	}
+	if (error != NULL) {
+		*error = NULL;
+	}
+	if ((params == NULL)
+	    || (params->account_name == NULL)
+	    || (params->level != WBC_CREDENTIAL_CACHE_LEVEL_NTLMSSP)) {
+		status = WBC_ERR_INVALID_PARAM;
+		goto fail;
+	}
+
+	if (params->domain_name != NULL) {
+		status = wbcRequestResponse(WINBINDD_INFO, NULL, &response);
+		if (!WBC_ERROR_IS_OK(status)) {
+			goto fail;
+		}
+		snprintf(request.data.ccache_ntlm_auth.user,
+			 sizeof(request.data.ccache_ntlm_auth.user)-1,
+			 "%s%c%s", params->domain_name,
+			 response.data.info.winbind_separator,
+			 params->account_name);
+	} else {
+		strncpy(request.data.ccache_ntlm_auth.user,
+			params->account_name,
+			sizeof(request.data.ccache_ntlm_auth.user)-1);
+	}
+	request.data.ccache_ntlm_auth.uid = getuid();
+
+	for (i=0; i<params->num_blobs; i++) {
+		if (strcasecmp(params->blobs[i].name, "initial_blob") == 0) {
+			initial_blob = &params->blobs[i];
+			break;
+		}
+		if (strcasecmp(params->blobs[i].name, "challenge_blob") == 0) {
+			challenge_blob = &params->blobs[i];
+			break;
+		}
+	}
+
+	request.data.ccache_ntlm_auth.initial_blob_len = 0;
+	request.data.ccache_ntlm_auth.challenge_blob_len = 0;
+	request.extra_len = 0;
+
+	if (initial_blob != NULL) {
+		request.data.ccache_ntlm_auth.initial_blob_len =
+			initial_blob->blob.length;
+		request.extra_len += initial_blob->blob.length;
+	}
+	if (challenge_blob != NULL) {
+		request.data.ccache_ntlm_auth.challenge_blob_len =
+			challenge_blob->blob.length;
+		request.extra_len += challenge_blob->blob.length;
+	}
+
+	if (request.extra_len != 0) {
+		request.extra_data.data = talloc_array(
+			NULL, char, request.extra_len);
+		if (request.extra_data.data == NULL) {
+			status = WBC_ERR_NO_MEMORY;
+			goto fail;
+		}
+	}
+	if (initial_blob != NULL) {
+		memcpy(request.extra_data.data,
+		       initial_blob->blob.data, initial_blob->blob.length);
+	}
+	if (challenge_blob != NULL) {
+		memcpy(request.extra_data.data
+		       + request.data.ccache_ntlm_auth.initial_blob_len,
+		       challenge_blob->blob.data,
+		       challenge_blob->blob.length);
+	}
+
+	status = wbcRequestResponse(WINBINDD_CCACHE_NTLMAUTH, &request,
+				    &response);
+	if (!WBC_ERROR_IS_OK(status)) {
+		goto fail;
+	}
+
+	result = talloc(NULL, struct wbcCredentialCacheInfo);
+	if (result == NULL) {
+		status = WBC_ERR_NO_MEMORY;
+		goto fail;
+	}
+	result->num_blobs = 0;
+	result->blobs = talloc(result, struct wbcNamedBlob);
+	if (result->blobs == NULL) {
+		status = WBC_ERR_NO_MEMORY;
+		goto fail;
+	}
+	status = wbcAddNamedBlob(&result->num_blobs, &result->blobs,
+				 "auth_blob", 0,
+				 (uint8_t *)response.extra_data.data,
+				 response.data.ccache_ntlm_auth.auth_blob_len);
+	if (!WBC_ERROR_IS_OK(status)) {
+		goto fail;
+	}
+	status = wbcAddNamedBlob(
+		&result->num_blobs, &result->blobs, "session_key", 0,
+		response.data.ccache_ntlm_auth.session_key,
+		sizeof(response.data.ccache_ntlm_auth.session_key));
+	if (!WBC_ERROR_IS_OK(status)) {
+		goto fail;
+	}
+
+	if (response.extra_data.data)
+		free(response.extra_data.data);
+	*info = result;
+	return WBC_ERR_SUCCESS;
+
+fail:
+	TALLOC_FREE(request.extra_data.data);
+	if (response.extra_data.data)
+		free(response.extra_data.data);
+	talloc_free(result);
+	return status;
+}
+
+/* Authenticate a user with cached credentials */
+wbcErr wbcCredentialSave(const char *user, const char *password)
+{
+	struct winbindd_request request;
+	struct winbindd_response response;
+
+	ZERO_STRUCT(request);
+	ZERO_STRUCT(response);
+
+	strncpy(request.data.ccache_save.user, user,
+		sizeof(request.data.ccache_save.user)-1);
+	strncpy(request.data.ccache_save.pass, password,
+		sizeof(request.data.ccache_save.pass)-1);
+	request.data.ccache_save.uid = getuid();
+
+	return wbcRequestResponse(WINBINDD_CCACHE_SAVE, &request, &response);
 }
diff --git a/nsswitch/libwbclient/wbclient.h b/nsswitch/libwbclient/wbclient.h
index 8bbbfbc..ac20690 100644
--- a/nsswitch/libwbclient/wbclient.h
+++ b/nsswitch/libwbclient/wbclient.h
@@ -1153,6 +1153,16 @@ wbcErr wbcCredentialCache(struct wbcCredentialCacheParams *params,
                           struct wbcCredentialCacheInfo **info,
                           struct wbcAuthErrorInfo **error);
 
+/**
+ * @brief Save a password with winbind for doing wbcCredentialCache() later
+ *
+ * @param *user	     Username
+ * @param *password  Password
+ *
+ * @return #wbcErr
+ **/
+wbcErr wbcCredentialSave(const char *user, const char *password);
+
 /**********************************************************
  * Resolve functions
  **********************************************************/
diff --git a/nsswitch/wbinfo.c b/nsswitch/wbinfo.c
index 45d8684..a43ce8f 100644
--- a/nsswitch/wbinfo.c
+++ b/nsswitch/wbinfo.c
@@ -1530,6 +1530,43 @@ static bool wbinfo_auth_crap(char *username, bool use_ntlmv2, bool use_lanman)
 	return WBC_ERROR_IS_OK(wbc_status);
 }
 
+/* Save creds with winbind */
+
+static bool wbinfo_ccache_save(char *username)
+{
+	wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
+	char *s = NULL;
+	char *p = NULL;
+	char *password = NULL;
+	char *name = NULL;
+	TALLOC_CTX *frame = talloc_stackframe();
+
+	s = talloc_strdup(frame, username);
+	if (s == NULL) {
+		return false;
+	}
+
+	p = strchr(s, '%');
+	if (p != NULL) {
+		*p = 0;
+		p++;
+		password = talloc_strdup(frame, p);
+	} else {
+		password = wbinfo_prompt_pass(frame, NULL, username);
+	}
+
+	name = s;
+
+	wbc_status = wbcCredentialSave(name, password);
+
+	d_printf("saving creds %s\n",
+		 WBC_ERROR_IS_OK(wbc_status) ? "succeeded" : "failed");
+
+	TALLOC_FREE(frame);
+
+	return WBC_ERROR_IS_OK(wbc_status);
+}
+
 #ifdef WITH_FAKE_KASERVER
 /* Authenticate a user with a plaintext password and set a token */
 
@@ -1736,6 +1773,7 @@ enum {
 	OPT_ONLINESTATUS,
 	OPT_CHANGE_USER_PASSWORD,
 	OPT_PING_DC,
+	OPT_CCACHE_SAVE,
 	OPT_SID_TO_FULLNAME,
 	OPT_NTLMV2,
 	OPT_LANMAN
@@ -1805,6 +1843,9 @@ int main(int argc, char **argv, char **envp)
 		{ "user-sids", 0, POPT_ARG_STRING, &string_arg, OPT_USERSIDS, "Get user group sids for user SID", "SID" },
 		{ "authenticate", 'a', POPT_ARG_STRING, &string_arg, 'a', "authenticate user", "user%password" },
 		{ "set-auth-user", 0, POPT_ARG_STRING, &string_arg, OPT_SET_AUTH_USER, "Store user and password used by winbindd (root only)", "user%password" },
+		{ "ccache-save", 0, POPT_ARG_STRING, &string_arg,
+		  OPT_CCACHE_SAVE, "Store user and password for ccache "
+		  "operation", "user%password" },
 		{ "getdcname", 0, POPT_ARG_STRING, &string_arg, OPT_GETDCNAME,
 		  "Get a DC name for a foreign domain", "domainname" },
 		{ "dsgetdcname", 0, POPT_ARG_STRING, &string_arg, OPT_DSGETDCNAME, "Find a DC for a domain", "domainname" },
@@ -2189,6 +2230,11 @@ int main(int argc, char **argv, char **envp)
 			wbinfo_get_auth_user();
 			goto done;
 			break;
+		case OPT_CCACHE_SAVE:
+			if (!wbinfo_ccache_save(string_arg)) {
+				goto done;
+			}
+			break;
 		case OPT_GETDCNAME:
 			if (!wbinfo_getdcname(string_arg)) {
 				goto done;
diff --git a/nsswitch/winbind_struct_protocol.h b/nsswitch/winbind_struct_protocol.h
index 4d27d52..2e0751f 100644
--- a/nsswitch/winbind_struct_protocol.h
+++ b/nsswitch/winbind_struct_protocol.h
@@ -48,8 +48,10 @@ typedef char fstring[FSTRING_LEN];
  * 21: added WINBINDD_GETPWSID
  *     added WINBINDD_GETSIDALIASES
  * 22: added WINBINDD_PING_DC
+ * 23: added session_key to ccache_ntlm_auth response
+ *     added WINBINDD_CCACHE_SAVE
  */
-#define WINBIND_INTERFACE_VERSION 22
+#define WINBIND_INTERFACE_VERSION 23
 
 /* Have to deal with time_t being 4 or 8 bytes due to structure alignment.
    On a 64bit Linux box, we have to support a constant structure size
@@ -177,6 +179,7 @@ enum winbindd_cmd {
 	/* Complete the challenge phase of the NTLM authentication
 	   protocol using cached password. */
 	WINBINDD_CCACHE_NTLMAUTH,
+	WINBINDD_CCACHE_SAVE,
 
 	WINBINDD_NUM_CMDS
 };
@@ -335,6 +338,11 @@ struct winbindd_request {
 			uint32_t challenge_blob_len;
 		} ccache_ntlm_auth;
 		struct {
+			uid_t uid;
+			fstring user;
+			fstring pass;
+		} ccache_save;
+		struct {
 			fstring domain_name;
 			fstring domain_guid;
 			fstring site_name;
@@ -478,6 +486,7 @@ struct winbindd_response {
 			uint32_t group_rid;
 		} user_info;
 		struct {
+			uint8_t session_key[16];
 			uint32_t auth_blob_len; /* blob in extra_data */
 		} ccache_ntlm_auth;
 		struct {
diff --git a/source3/Makefile.in b/source3/Makefile.in
index cdf2d38..37c39ca 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -1547,9 +1547,10 @@ bin/smbd at EXEEXT@: $(BINARY_PREREQS) $(SMBD_OBJ) $(LIBTALLOC) $(LIBTDB) $(LIBWBCL
 		$(POPT_LIBS) @SMBD_LIBS@ $(LIBTALLOC_LIBS) $(LIBTDB_LIBS) \
 		$(LIBWBCLIENT_LIBS) $(ZLIB_LIBS)
 
-bin/nmbd at EXEEXT@: $(BINARY_PREREQS) $(NMBD_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/nmbd at EXEEXT@: $(BINARY_PREREQS) $(NMBD_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(NMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(POPT_LIBS) \
 		$(KRB5LIBS) $(LDAP_LIBS) $(ZLIB_LIBS)
 
@@ -1581,14 +1582,16 @@ bin/net at EXEEXT@: $(BINARY_PREREQS) $(NET_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(LIBWBCLIENT_LIBS) $(LIBNETAPI_LIBS) \
 		$(ZLIB_LIBS)
 
-bin/profiles at EXEEXT@: $(BINARY_PREREQS) $(PROFILES_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/profiles at EXEEXT@: $(BINARY_PREREQS) $(PROFILES_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(PROFILES_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LDAP_LIBS) $(POPT_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
 
-bin/smbspool at EXEEXT@: $(BINARY_PREREQS) $(CUPS_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/smbspool at EXEEXT@: $(BINARY_PREREQS) $(CUPS_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(CUPS_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(KRB5LIBS) $(LDAP_LIBS) $(POPT_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(ZLIB_LIBS)
 
 bin/mount.cifs at EXEEXT@: $(BINARY_PREREQS) $(CIFS_MOUNT_OBJ)
@@ -1606,21 +1609,24 @@ bin/cifs.upcall at EXEEXT@: $(BINARY_PREREQS) $(CIFS_UPCALL_OBJ) $(LIBSMBCLIENT_OBJ
 		$(LDAP_LIBS) $(LIBTALLOC_LIBS) $(LIBWBCLIENT_LIBS) \
 		$(LIBTDB_LIBS) $(NSCD_LIBS) $(ZLIB_LIBS)
 
-bin/testparm at EXEEXT@: $(BINARY_PREREQS) $(TESTPARM_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/testparm at EXEEXT@: $(BINARY_PREREQS) $(TESTPARM_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(TESTPARM_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LDAP_LIBS) $(POPT_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
 
-bin/smbstatus at EXEEXT@: $(BINARY_PREREQS) $(STATUS_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/smbstatus at EXEEXT@: $(BINARY_PREREQS) $(STATUS_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(STATUS_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LDAP_LIBS) $(POPT_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
 
-bin/smbcontrol at EXEEXT@: $(BINARY_PREREQS) $(SMBCONTROL_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/smbcontrol at EXEEXT@: $(BINARY_PREREQS) $(SMBCONTROL_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -DUSING_SMBCONTROL -o $@ \
 		$(SMBCONTROL_OBJ) $(DYNEXP) $(LDFLAGS) \
 		$(LIBS) $(LDAP_LIBS) @LIBUNWIND_PTRACE@ $(POPT_LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
 
 bin/smbtree at EXEEXT@: $(BINARY_PREREQS) $(SMBTREE_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
@@ -1647,9 +1653,10 @@ bin/smbget at EXEEXT@: $(BINARY_PREREQS) $(SMBGET_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(
 		$(POPT_LIBS)  $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(LIBWBCLIENT_LIBS) $(ZLIB_LIBS)
 
-bin/nmblookup at EXEEXT@: $(BINARY_PREREQS) $(NMBLOOKUP_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/nmblookup at EXEEXT@: $(BINARY_PREREQS) $(NMBLOOKUP_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(NMBLOOKUP_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(POPT_LIBS) $(LDAP_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
 
 bin/smbtorture at EXEEXT@: $(BINARY_PREREQS) $(SMBTORTURE_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
@@ -1658,10 +1665,11 @@ bin/smbtorture at EXEEXT@: $(BINARY_PREREQS) $(SMBTORTURE_OBJ) @BUILD_POPT@ $(LIBTA
 		$(LIBS) $(KRB5LIBS) $(LDAP_LIBS) $(POPT_LIBS) $(LIBTALLOC_LIBS) \
 		$(LIBTDB_LIBS) $(ZLIB_LIBS) $(LIBWBCLIENT_LIBS)
 
-bin/talloctort at EXEEXT@: $(BINARY_PREREQS) $(TALLOCTORT_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/talloctort at EXEEXT@: $(BINARY_PREREQS) $(TALLOCTORT_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(TALLOCTORT_OBJ) $(LDFLAGS) \
 		$(DYNEXP) $(LIBS) $(LDAP_LIBS) $(POPT_LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
 
 bin/replacetort at EXEEXT@: $(REPLACETORT_OBJ) @BUILD_POPT@ $(LIBTALLOC)
@@ -1675,16 +1683,18 @@ bin/smbconftort at EXEEXT@: $(SMBCONFTORT_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
 		$(DYNEXP) $(LIBS) $(LDAP_LIBS) $(POPT_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
 
-bin/masktest at EXEEXT@: $(BINARY_PREREQS) $(MASKTEST_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/masktest at EXEEXT@: $(BINARY_PREREQS) $(MASKTEST_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(MASKTEST_OBJ) $(LDFLAGS) $(DYNEXP) \
 		$(LIBS) $(KRB5LIBS) $(LDAP_LIBS) $(POPT_LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(ZLIB_LIBS)
 
-bin/msgtest at EXEEXT@: $(BINARY_PREREQS) $(MSGTEST_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/msgtest at EXEEXT@: $(BINARY_PREREQS) $(MSGTEST_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(MSGTEST_OBJ) $(LDFLAGS) $(DYNEXP) \
 		$(LIBS) $(KRB5LIBS) $(LDAP_LIBS) $(POPT_LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(ZLIB_LIBS)
 
 bin/smbcacls at EXEEXT@: $(BINARY_PREREQS) $(SMBCACLS_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
@@ -1699,20 +1709,23 @@ bin/smbcquotas at EXEEXT@: $(BINARY_PREREQS) $(SMBCQUOTAS_OBJ) @BUILD_POPT@ $(LIBTA
 		$(LIBS) $(POPT_LIBS) $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(LIBWBCLIENT_LIBS) $(ZLIB_LIBS)
 
-bin/eventlogadm at EXEEXT@: $(BINARY_PREREQS) $(EVTLOGADM_OBJ) $(LIBTALLOC) $(LIBTDB)
+bin/eventlogadm at EXEEXT@: $(BINARY_PREREQS) $(EVTLOGADM_OBJ) $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(EVTLOGADM_OBJ) $(DYNEXP) $(LDFLAGS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LIBS) $(LDAP_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
 
-bin/sharesec at EXEEXT@: $(BINARY_PREREQS) $(SHARESEC_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/sharesec at EXEEXT@: $(BINARY_PREREQS) $(SHARESEC_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(SHARESEC_OBJ) $(DYNEXP) $(LDFLAGS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LIBS) $(LDAP_LIBS) $(POPT_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
 
-bin/locktest at EXEEXT@: $(BINARY_PREREQS) $(LOCKTEST_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/locktest at EXEEXT@: $(BINARY_PREREQS) $(LOCKTEST_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(LOCKTEST_OBJ) $(LDFLAGS) $(DYNEXP) \
 		$(LIBS) $(KRB5LIBS) $(LDAP_LIBS) $(POPT_LIBS) \
+		@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(ZLIB_LIBS)
 
 bin/nsstest at EXEEXT@: $(BINARY_PREREQS) $(NSSTEST_OBJ)
@@ -1733,10 +1746,11 @@ bin/vfstest at EXEEXT@: $(BINARY_PREREQS) $(VFSTEST_OBJ) @BUILD_POPT@ $(LIBTALLOC)
 		@SMBD_LIBS@ $(NSCD_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS) \
 		$(LIBWBCLIENT_LIBS) $(ZLIB_LIBS)
 
-bin/smbiconv at EXEEXT@: $(BINARY_PREREQS) $(SMBICONV_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/smbiconv at EXEEXT@: $(BINARY_PREREQS) $(SMBICONV_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@
 	@$(CC) -o $@ $(SMBICONV_OBJ) $(LDFLAGS) $(TERMLDFLAGS) \


-- 
Samba Shared Repository


More information about the samba-cvs mailing list