1
0
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:
Jeremy Allison 2016-01-05 11:18:12 -08:00 committed by Karolin Seeger
parent c23f6775c1
commit 76f6cf5bbf

View File

@ -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.
********************************************************************/