1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

vfs_fake_perms: Fix bug 9775, segfault for "artificial" conn_structs

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>

Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Wed Apr 10 00:12:06 CEST 2013 on sn-devel-104
This commit is contained in:
Volker Lendecke 2013-04-09 21:18:34 +02:00 committed by Jeremy Allison
parent ce2fb2d019
commit 69b3d19445

View File

@ -44,8 +44,21 @@ static int fake_perms_stat(vfs_handle_struct *handle,
} else {
smb_fname->st.st_ex_mode = S_IRWXU;
}
smb_fname->st.st_ex_uid = handle->conn->session_info->unix_token->uid;
smb_fname->st.st_ex_gid = handle->conn->session_info->unix_token->gid;
if (handle->conn->session_info != NULL) {
struct security_unix_token *utok;
utok = handle->conn->session_info->unix_token;
smb_fname->st.st_ex_uid = utok->uid;
smb_fname->st.st_ex_gid = utok->gid;
} else {
/*
* We have an artificial connection for dfs for example. It
* sucks, but the current uid/gid is the best we have.
*/
smb_fname->st.st_ex_uid = geteuid();
smb_fname->st.st_ex_gid = getegid();
}
return ret;
}
@ -64,8 +77,20 @@ static int fake_perms_fstat(vfs_handle_struct *handle, files_struct *fsp, SMB_ST
} else {
sbuf->st_ex_mode = S_IRWXU;
}
sbuf->st_ex_uid = handle->conn->session_info->unix_token->uid;
sbuf->st_ex_gid = handle->conn->session_info->unix_token->gid;
if (handle->conn->session_info != NULL) {
struct security_unix_token *utok;
utok = handle->conn->session_info->unix_token;
sbuf->st_ex_uid = utok->uid;
sbuf->st_ex_gid = utok->gid;
} else {
/*
* We have an artificial connection for dfs for example. It
* sucks, but the current uid/gid is the best we have.
*/
sbuf->st_ex_uid = geteuid();
sbuf->st_ex_gid = getegid();
}
return ret;
}