auth: move copy_session_info() from source3 into the global auth context
authorBjörn Baumbach <bb@sernet.de>
Thu, 30 Aug 2018 14:33:25 +0000 (16:33 +0200)
committerBjörn Baumbach <bb@sernet.de>
Thu, 11 Oct 2018 08:28:17 +0000 (10:28 +0200)
Signed-off-by: Björn Baumbach <bb@sernet.de>
Reviewed-by: Volker Lendecke <vl@samba.org>
auth/auth_util.c [new file with mode: 0644]
auth/auth_util.h [new file with mode: 0644]
auth/wscript_build
source3/auth/auth_util.c
source3/auth/proto.h
source3/auth/wscript_build
source3/rpc_server/rpc_ncacn_np.c
source3/smbd/msdfs.c
source3/smbd/service.c
source3/smbd/uid.c

diff --git a/auth/auth_util.c b/auth/auth_util.c
new file mode 100644 (file)
index 0000000..f3586f1
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+   Unix SMB/CIFS implementation.
+   Authentication utility functions
+
+   Copyright (C) Andrew Bartlett <abartlet@samba.org> 2017
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "librpc/ndr/libndr.h"
+#include "librpc/gen_ndr/ndr_auth.h"
+#include "auth_util.h"
+
+struct auth_session_info *copy_session_info(TALLOC_CTX *mem_ctx,
+                                           const struct auth_session_info *src)
+{
+       struct auth_session_info *dst;
+       DATA_BLOB blob;
+       enum ndr_err_code ndr_err;
+
+       ndr_err = ndr_push_struct_blob(
+               &blob,
+               talloc_tos(),
+               src,
+               (ndr_push_flags_fn_t)ndr_push_auth_session_info);
+       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+               DBG_ERR("copy_session_info(): ndr_push_auth_session_info "
+                       "failed: %s\n",
+                       ndr_errstr(ndr_err));
+               return NULL;
+       }
+
+       dst = talloc(mem_ctx, struct auth_session_info);
+       if (dst == NULL) {
+               DBG_ERR("talloc failed\n");
+               TALLOC_FREE(blob.data);
+               return NULL;
+       }
+
+       ndr_err = ndr_pull_struct_blob(
+               &blob,
+               dst,
+               dst,
+               (ndr_pull_flags_fn_t)ndr_pull_auth_session_info);
+       TALLOC_FREE(blob.data);
+
+       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+               DBG_ERR("copy_session_info(): ndr_pull_auth_session_info "
+                       "failed: %s\n",
+                       ndr_errstr(ndr_err));
+               TALLOC_FREE(dst);
+               return NULL;
+       }
+
+       return dst;
+}
diff --git a/auth/auth_util.h b/auth/auth_util.h
new file mode 100644 (file)
index 0000000..1037cb8
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+   Unix SMB/CIFS implementation.
+   Authentication utility functions
+
+   Copyright (C) Andrew Bartlett <abartlet@samba.org> 2017
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+struct auth_session_info *copy_session_info(
+       TALLOC_CTX *mem_ctx,
+       const struct auth_session_info *src);
index e2e3d213f489eba8b88944674bc6af0d661d47e7..a8b0e6cf3eb0bdf3fa4e856e989fb46b617e07b1 100644 (file)
@@ -1,8 +1,20 @@
 #!/usr/bin/env python
 
 bld.SAMBA_LIBRARY('common_auth',
-                  source='auth_sam_reply.c wbc_auth_util.c auth_log.c',
-                  deps='talloc samba-security samba-util util_str_escape LIBTSOCKET audit_logging jansson MESSAGING_SEND server_id_db ',
+                  source='''auth_sam_reply.c
+                            wbc_auth_util.c
+                            auth_log.c
+                            auth_util.c''',
+                  deps='''talloc
+                          samba-security
+                          samba-util
+                          util_str_escape
+                          LIBTSOCKET
+                          audit_logging
+                          jansson
+                          MESSAGING_SEND
+                          server_id_db
+                          ndr-samba''',
                   private_library=True)
 
 bld.RECURSE('gensec')
index 24d1e37e9cb3e8069500069abecf39516a503f5a..7b0d69f1f2175d494978fd6fda8a57e14d8a1efc 100644 (file)
@@ -38,6 +38,7 @@
 #include "../lib/tsocket/tsocket.h"
 #include "rpc_client/util_netlogon.h"
 #include "source4/auth/auth.h"
+#include "auth/auth_util.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_AUTH
@@ -1674,44 +1675,6 @@ static struct auth_serversupplied_info *copy_session_info_serverinfo_guest(TALLO
        return dst;
 }
 
-struct auth_session_info *copy_session_info(TALLOC_CTX *mem_ctx,
-                                            const struct auth_session_info *src)
-{
-       struct auth_session_info *dst;
-       DATA_BLOB blob;
-       enum ndr_err_code ndr_err;
-
-       ndr_err = ndr_push_struct_blob(
-               &blob, talloc_tos(), src,
-               (ndr_push_flags_fn_t)ndr_push_auth_session_info);
-       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-               DEBUG(0, ("copy_session_info(): ndr_push_auth_session_info failed: "
-                          "%s\n", ndr_errstr(ndr_err)));
-               return NULL;
-       }
-
-       dst = talloc(mem_ctx, struct auth_session_info);
-       if (dst == NULL) {
-               DEBUG(0, ("talloc failed\n"));
-               TALLOC_FREE(blob.data);
-               return NULL;
-       }
-
-       ndr_err = ndr_pull_struct_blob(
-               &blob, dst, dst,
-               (ndr_pull_flags_fn_t)ndr_pull_auth_session_info);
-       TALLOC_FREE(blob.data);
-
-       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-               DEBUG(0, ("copy_session_info(): ndr_pull_auth_session_info failed: "
-                          "%s\n", ndr_errstr(ndr_err)));
-               TALLOC_FREE(dst);
-               return NULL;
-       }
-
-       return dst;
-}
-
 /*
  * Set a new session key. Used in the rpc server where we have to override the
  * SMB level session key with SystemLibraryDTC
index e4a6830eecbaca318e4b4868df0feec8687d1a56..75cf1e6724fbb6ff3130b8af187b0443a03600c8 100644 (file)
@@ -270,8 +270,6 @@ NTSTATUS make_session_info_from_username(TALLOC_CTX *mem_ctx,
                                         const char *username,
                                         bool is_guest,
                                         struct auth_session_info **session_info);
-struct auth_session_info *copy_session_info(TALLOC_CTX *mem_ctx,
-                                            const struct auth_session_info *src);
 bool init_guest_session_info(TALLOC_CTX *mem_ctx);
 NTSTATUS init_system_session_info(TALLOC_CTX *mem_ctx);
 bool session_info_set_session_key(struct auth_session_info *info,
index 8fd7dcded86de2f57ea003a50bba1f370edf59d8..d27c231caa740e5cd4ceda1f1ae50742e1effd6a 100644 (file)
@@ -14,7 +14,7 @@ bld.SAMBA3_SUBSYSTEM('AUTH_COMMON',
                              server_info.c
                              server_info_sam.c
                              user_info.c''',
-                     deps='TOKEN_UTIL DCUTIL USER_UTIL')
+                     deps='TOKEN_UTIL DCUTIL USER_UTIL common_auth')
 
 bld.SAMBA3_LIBRARY('auth',
                    source='''auth.c
index 511d54e895a67d2c7f1b5ea4aae5f95f3d1cf207..5ee98a10d7094ddb66dec78437d50f13915e7db7 100644 (file)
@@ -30,6 +30,7 @@
 #include "librpc/gen_ndr/netlogon.h"
 #include "librpc/gen_ndr/auth.h"
 #include "../auth/auth_sam_reply.h"
+#include "../auth/auth_util.h"
 #include "auth.h"
 #include "rpc_server/rpc_pipes.h"
 #include "../lib/tsocket/tsocket.h"
index d3f572e22a1cad00989461b4d04f69ccefd03a15..880a02b0320bf31d1a89ac77887f06b8fca4e060 100644 (file)
@@ -28,6 +28,7 @@
 #include "smbd/globals.h"
 #include "msdfs.h"
 #include "auth.h"
+#include "../auth/auth_util.h"
 #include "lib/param/loadparm.h"
 #include "libcli/security/security.h"
 #include "librpc/gen_ndr/ndr_dfsblobs.h"
index 2e4a1136254b56941dd1dfd1374560ec94f21181..a19b973424678f4e8d1b9748f9cc173328e17308 100644 (file)
@@ -28,6 +28,7 @@
 #include "printing/pcap.h"
 #include "passdb/lookup_sid.h"
 #include "auth.h"
+#include "../auth/auth_util.h"
 #include "lib/param/loadparm.h"
 #include "messages.h"
 #include "lib/afs/afs_funcs.h"
index 41bb66e2df1d3e42e350fa2f5559285d485be5dd..77e5f8c83b71899fd7d5b124c6f2a0977baecd84 100644 (file)
@@ -26,6 +26,7 @@
 #include "libcli/security/security.h"
 #include "passdb/lookup_sid.h"
 #include "auth.h"
+#include "../auth/auth_util.h"
 #include "lib/util/time_basic.h"
 #include "lib/pthreadpool/pthreadpool_tevent.h"