mirror of
https://github.com/samba-team/samba.git
synced 2025-08-05 12:22:11 +03:00
s3:smbd: change user_struct->vuid to uint64_t
Only sconn->smb1.sessions.next_vuid remains as uint16_t, so that we do not generate larger values yet. metze Autobuild-User: Stefan Metzmacher <metze@samba.org> Autobuild-Date: Wed Jun 6 12:07:33 CEST 2012 on sn-devel-104
This commit is contained in:
@ -167,7 +167,7 @@
|
||||
|
||||
#ifndef SESSION_TEMPLATE
|
||||
/* Paramaters are 'pid' and 'vuid' */
|
||||
#define SESSION_TEMPLATE "smb/%lu/%d"
|
||||
#define SESSION_TEMPLATE "smb/%lu/%llu"
|
||||
#endif
|
||||
|
||||
#ifndef SESSION_UTMP_TEMPLATE
|
||||
|
@ -476,7 +476,7 @@ struct pending_auth_data;
|
||||
|
||||
struct user_struct {
|
||||
struct user_struct *next, *prev;
|
||||
uint16 vuid; /* Tag for this entry. */
|
||||
uint64_t vuid; /* Tag for this entry. */
|
||||
|
||||
char *session_keystr; /* used by utmp and pam session code.
|
||||
TDB key string */
|
||||
@ -590,7 +590,7 @@ struct smbd_server_connection {
|
||||
* Set by us for CORE protocol.
|
||||
*/
|
||||
int max_send;
|
||||
uint16_t last_session_tag;
|
||||
uint64_t last_session_tag;
|
||||
|
||||
/*
|
||||
* this holds info on user ids that are already
|
||||
|
@ -43,7 +43,7 @@ enum server_allocated_state { SERVER_ALLOCATED_REQUIRED_YES,
|
||||
|
||||
static struct user_struct *get_valid_user_struct_internal(
|
||||
struct smbd_server_connection *sconn,
|
||||
uint16 vuid,
|
||||
uint64_t vuid,
|
||||
enum server_allocated_state server_allocated)
|
||||
{
|
||||
struct user_struct *usp;
|
||||
@ -85,13 +85,13 @@ static struct user_struct *get_valid_user_struct_internal(
|
||||
****************************************************************************/
|
||||
|
||||
struct user_struct *get_valid_user_struct(struct smbd_server_connection *sconn,
|
||||
uint16 vuid)
|
||||
uint64_t vuid)
|
||||
{
|
||||
return get_valid_user_struct_internal(sconn, vuid,
|
||||
SERVER_ALLOCATED_REQUIRED_YES);
|
||||
}
|
||||
|
||||
bool is_partial_auth_vuid(struct smbd_server_connection *sconn, uint16 vuid)
|
||||
bool is_partial_auth_vuid(struct smbd_server_connection *sconn, uint64_t vuid)
|
||||
{
|
||||
return (get_partial_auth_user_struct(sconn, vuid) != NULL);
|
||||
}
|
||||
@ -101,7 +101,7 @@ bool is_partial_auth_vuid(struct smbd_server_connection *sconn, uint16 vuid)
|
||||
****************************************************************************/
|
||||
|
||||
struct user_struct *get_partial_auth_user_struct(struct smbd_server_connection *sconn,
|
||||
uint16 vuid)
|
||||
uint64_t vuid)
|
||||
{
|
||||
return get_valid_user_struct_internal(sconn, vuid,
|
||||
SERVER_ALLOCATED_REQUIRED_NO);
|
||||
@ -111,7 +111,7 @@ struct user_struct *get_partial_auth_user_struct(struct smbd_server_connection *
|
||||
Invalidate a uid.
|
||||
****************************************************************************/
|
||||
|
||||
void invalidate_vuid(struct smbd_server_connection *sconn, uint16 vuid)
|
||||
void invalidate_vuid(struct smbd_server_connection *sconn, uint64_t vuid)
|
||||
{
|
||||
struct user_struct *vuser = NULL;
|
||||
|
||||
@ -167,7 +167,7 @@ static void increment_next_vuid(uint16_t *vuid)
|
||||
Create a new partial auth user struct.
|
||||
*****************************************************/
|
||||
|
||||
int register_initial_vuid(struct smbd_server_connection *sconn)
|
||||
uint64_t register_initial_vuid(struct smbd_server_connection *sconn)
|
||||
{
|
||||
struct user_struct *vuser;
|
||||
|
||||
@ -256,8 +256,8 @@ int register_homes_share(const char *username)
|
||||
*
|
||||
*/
|
||||
|
||||
int register_existing_vuid(struct smbd_server_connection *sconn,
|
||||
uint16 vuid,
|
||||
uint64_t register_existing_vuid(struct smbd_server_connection *sconn,
|
||||
uint64_t vuid,
|
||||
struct auth_session_info *session_info,
|
||||
DATA_BLOB response_blob)
|
||||
{
|
||||
@ -299,13 +299,14 @@ int register_existing_vuid(struct smbd_server_connection *sconn,
|
||||
SMB_ASSERT(vuser->session_info->unix_token);
|
||||
|
||||
DEBUG(3,("register_existing_vuid: UNIX uid %d is UNIX user %s, "
|
||||
"and will be vuid %u\n", (int)vuser->session_info->unix_token->uid,
|
||||
vuser->session_info->unix_info->unix_name, vuser->vuid));
|
||||
"and will be vuid %llu\n", (int)vuser->session_info->unix_token->uid,
|
||||
vuser->session_info->unix_info->unix_name,
|
||||
(unsigned long long)vuser->vuid));
|
||||
|
||||
if (!session_claim(sconn, vuser)) {
|
||||
DEBUG(1, ("register_existing_vuid: Failed to claim session "
|
||||
"for vuid=%d\n",
|
||||
vuser->vuid));
|
||||
"for vuid=%llu\n",
|
||||
(unsigned long long)vuser->vuid));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -1354,7 +1354,7 @@ static void smb_dump(const char *name, int type, const char *data)
|
||||
static connection_struct *switch_message(uint8 type, struct smb_request *req)
|
||||
{
|
||||
int flags;
|
||||
uint16 session_tag;
|
||||
uint64_t session_tag;
|
||||
connection_struct *conn = NULL;
|
||||
struct smbd_server_connection *sconn = req->sconn;
|
||||
|
||||
|
@ -688,16 +688,16 @@ struct kernel_oplocks *linux_init_kernel_oplocks(struct smbd_server_connection *
|
||||
/* The following definitions come from smbd/password.c */
|
||||
|
||||
struct user_struct *get_valid_user_struct(struct smbd_server_connection *sconn,
|
||||
uint16 vuid);
|
||||
bool is_partial_auth_vuid(struct smbd_server_connection *sconn, uint16 vuid);
|
||||
uint64_t vuid);
|
||||
bool is_partial_auth_vuid(struct smbd_server_connection *sconn, uint64_t vuid);
|
||||
struct user_struct *get_partial_auth_user_struct(struct smbd_server_connection *sconn,
|
||||
uint16 vuid);
|
||||
void invalidate_vuid(struct smbd_server_connection *sconn, uint16 vuid);
|
||||
uint64_t vuid);
|
||||
void invalidate_vuid(struct smbd_server_connection *sconn, uint64_t vuid);
|
||||
void invalidate_all_vuids(struct smbd_server_connection *sconn);
|
||||
int register_initial_vuid(struct smbd_server_connection *sconn);
|
||||
uint64_t register_initial_vuid(struct smbd_server_connection *sconn);
|
||||
int register_homes_share(const char *username);
|
||||
int register_existing_vuid(struct smbd_server_connection *sconn,
|
||||
uint16 vuid,
|
||||
uint64_t register_existing_vuid(struct smbd_server_connection *sconn,
|
||||
uint64_t vuid,
|
||||
struct auth_session_info *session_info,
|
||||
DATA_BLOB response_blob);
|
||||
|
||||
|
@ -119,8 +119,9 @@ bool session_claim(struct smbd_server_connection *sconn, struct user_struct *vus
|
||||
SESSION_UTMP_TEMPLATE, i);
|
||||
} else
|
||||
{
|
||||
snprintf(keystr, sizeof(keystr), "ID/%s/%u",
|
||||
procid_str_static(&pid), vuser->vuid);
|
||||
snprintf(keystr, sizeof(keystr), "ID/%s/%llu",
|
||||
procid_str_static(&pid),
|
||||
(unsigned long long)vuser->vuid);
|
||||
|
||||
rec = sessionid_fetch_record(NULL, keystr);
|
||||
if (rec == NULL) {
|
||||
@ -130,7 +131,7 @@ bool session_claim(struct smbd_server_connection *sconn, struct user_struct *vus
|
||||
|
||||
snprintf(sessionid.id_str, sizeof(sessionid.id_str),
|
||||
SESSION_TEMPLATE, (long unsigned int)getpid(),
|
||||
vuser->vuid);
|
||||
(unsigned long long)vuser->vuid);
|
||||
}
|
||||
|
||||
SMB_ASSERT(rec != NULL);
|
||||
|
@ -126,7 +126,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
|
||||
const char *p2;
|
||||
uint16 data_blob_len = SVAL(req->vwv+7, 0);
|
||||
enum remote_arch_types ra_type = get_remote_arch();
|
||||
int vuid = req->vuid;
|
||||
uint64_t vuid = req->vuid;
|
||||
struct user_struct *vuser = NULL;
|
||||
NTSTATUS status = NT_STATUS_OK;
|
||||
struct smbd_server_connection *sconn = req->sconn;
|
||||
@ -259,7 +259,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
|
||||
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
struct auth_session_info *session_info = NULL;
|
||||
int tmp_vuid;
|
||||
uint64_t tmp_vuid;
|
||||
|
||||
status = gensec_session_info(vuser->gensec_security,
|
||||
talloc_tos(),
|
||||
@ -391,7 +391,7 @@ static void setup_new_vc_session(struct smbd_server_connection *sconn)
|
||||
|
||||
void reply_sesssetup_and_X(struct smb_request *req)
|
||||
{
|
||||
int sess_vuid;
|
||||
uint64_t sess_vuid;
|
||||
int smb_bufsize;
|
||||
DATA_BLOB lm_resp;
|
||||
DATA_BLOB nt_resp;
|
||||
|
@ -244,8 +244,8 @@ static NTSTATUS smbd_smb2_auth_generic_return(struct smbd_smb2_session *session,
|
||||
|
||||
if (!session_claim(session->sconn, session->compat_vuser)) {
|
||||
DEBUG(1, ("smb2: Failed to claim session "
|
||||
"for vuid=%d\n",
|
||||
session->compat_vuser->vuid));
|
||||
"for vuid=%llu\n",
|
||||
(unsigned long long)session->compat_vuser->vuid));
|
||||
TALLOC_FREE(session);
|
||||
return NT_STATUS_LOGON_FAILURE;
|
||||
}
|
||||
|
Reference in New Issue
Block a user