mirror of
https://github.com/samba-team/samba.git
synced 2025-02-08 05:57:51 +03:00
CVE-2015-7560: s3: smbd: Add refuse_symlink() function that can be used to prevent operations on a symlink.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11648 Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
This commit is contained in:
parent
c23f6775c1
commit
76f6cf5bbf
@ -54,6 +54,34 @@ static char *store_file_unix_basic_info2(connection_struct *conn,
|
||||
files_struct *fsp,
|
||||
const SMB_STRUCT_STAT *psbuf);
|
||||
|
||||
/****************************************************************************
|
||||
Check if an open file handle or pathname is a symlink.
|
||||
****************************************************************************/
|
||||
|
||||
static NTSTATUS refuse_symlink(connection_struct *conn,
|
||||
const files_struct *fsp,
|
||||
const char *name)
|
||||
{
|
||||
SMB_STRUCT_STAT sbuf;
|
||||
const SMB_STRUCT_STAT *pst = NULL;
|
||||
|
||||
if (fsp) {
|
||||
pst = &fsp->fsp_name->st;
|
||||
} else {
|
||||
int ret = vfs_stat_smb_basename(conn,
|
||||
name,
|
||||
&sbuf);
|
||||
if (ret == -1) {
|
||||
return map_nt_error_from_unix(errno);
|
||||
}
|
||||
pst = &sbuf;
|
||||
}
|
||||
if (S_ISLNK(pst->st_ex_mode)) {
|
||||
return NT_STATUS_ACCESS_DENIED;
|
||||
}
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
The canonical "check access" based on object handle or path function.
|
||||
********************************************************************/
|
||||
|
Loading…
x
Reference in New Issue
Block a user