mirror of
https://github.com/samba-team/samba.git
synced 2025-01-08 21:18:16 +03:00
auth: move copy_session_info() from source3 into the global auth context
Signed-off-by: Björn Baumbach <bb@sernet.de> Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
parent
31daab88e6
commit
96b5bf1370
68
auth/auth_util.c
Normal file
68
auth/auth_util.c
Normal file
@ -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;
|
||||
}
|
23
auth/auth_util.h
Normal file
23
auth/auth_util.h
Normal file
@ -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);
|
@ -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')
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user