mirror of
https://github.com/samba-team/samba.git
synced 2025-08-15 13:49:28 +03:00
r21082: Make canonicalize_path static to service.c -- we do have conn->connectpath
(This used to be commit 06f58096e3
)
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
6490e114b8
commit
37a3339a18
@ -189,7 +189,6 @@ static void *fam_notify_add(TALLOC_CTX *mem_ctx,
|
||||
files_struct *fsp, uint32 *filter)
|
||||
{
|
||||
struct fam_notify_ctx *ctx;
|
||||
pstring fullpath;
|
||||
|
||||
if ((*filter & FILE_NOTIFY_CHANGE_FILE_NAME) == 0) {
|
||||
DEBUG(10, ("filter = %u, no FILE_NOTIFY_CHANGE_FILE_NAME\n",
|
||||
@ -197,21 +196,6 @@ static void *fam_notify_add(TALLOC_CTX *mem_ctx,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* FAM needs an absolute pathname. */
|
||||
|
||||
pstrcpy(fullpath, fsp->fsp_name);
|
||||
if (!canonicalize_path(fsp->conn, fullpath)) {
|
||||
DEBUG(0, ("failed to canonicalize path '%s'\n", fullpath));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (*fullpath != '/') {
|
||||
DEBUG(0, ("canonicalized path '%s' into `%s`\n", fsp->fsp_name,
|
||||
fullpath));
|
||||
DEBUGADD(0, ("but expected an absolute path\n"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!(ctx = TALLOC_P(mem_ctx, struct fam_notify_ctx))) {
|
||||
return NULL;
|
||||
}
|
||||
@ -226,8 +210,9 @@ static void *fam_notify_add(TALLOC_CTX *mem_ctx,
|
||||
|
||||
ctx->filter = FILE_NOTIFY_CHANGE_FILE_NAME;
|
||||
|
||||
if (!(ctx->path = talloc_strdup(ctx, fullpath))) {
|
||||
DEBUG(0, ("talloc_strdup failed\n"));
|
||||
if (!(ctx->path = talloc_asprintf(ctx, "%s/%s", fsp->conn->connectpath,
|
||||
fsp->fsp_name))) {
|
||||
DEBUG(0, ("talloc_asprintf failed\n"));
|
||||
TALLOC_FREE(ctx);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -222,7 +222,6 @@ static void *hash_notify_add(TALLOC_CTX *mem_ctx,
|
||||
{
|
||||
struct hash_notify_ctx *ctx;
|
||||
int timeout = lp_change_notify_timeout(SNUM(fsp->conn));
|
||||
pstring fullpath;
|
||||
|
||||
if (timeout <= 0) {
|
||||
/* It change notify timeout has been disabled, never scan the
|
||||
@ -230,26 +229,14 @@ static void *hash_notify_add(TALLOC_CTX *mem_ctx,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pstrcpy(fullpath, fsp->fsp_name);
|
||||
if (!canonicalize_path(fsp->conn, fullpath)) {
|
||||
DEBUG(0, ("failed to canonicalize path '%s'\n", fullpath));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (*fullpath != '/') {
|
||||
DEBUG(0, ("canonicalized path '%s' into `%s`\n", fsp->fsp_name,
|
||||
fullpath));
|
||||
DEBUGADD(0, ("but expected an absolute path\n"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!(ctx = TALLOC_P(mem_ctx, struct hash_notify_ctx))) {
|
||||
DEBUG(0, ("talloc failed\n"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!(ctx->path = talloc_strdup(ctx, fullpath))) {
|
||||
DEBUG(0, ("talloc_strdup failed\n"));
|
||||
if (!(ctx->path = talloc_asprintf(ctx, "%s/%s", fsp->conn->connectpath,
|
||||
fsp->fsp_name))) {
|
||||
DEBUG(0, ("talloc_asprintf failed\n"));
|
||||
TALLOC_FREE(ctx);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -22,6 +22,31 @@
|
||||
|
||||
extern userdom_struct current_user_info;
|
||||
|
||||
BOOL canonicalize_path(connection_struct *conn, pstring path)
|
||||
{
|
||||
#ifdef REALPATH_TAKES_NULL
|
||||
char *resolved_name = SMB_VFS_REALPATH(conn,path,NULL);
|
||||
if (!resolved_name) {
|
||||
return False;
|
||||
}
|
||||
pstrcpy(path, resolved_name);
|
||||
SAFE_FREE(resolved_name);
|
||||
return True;
|
||||
#else
|
||||
#ifdef PATH_MAX
|
||||
char resolved_name_buf[PATH_MAX+1];
|
||||
#else
|
||||
pstring resolved_name_buf;
|
||||
#endif
|
||||
char *resolved_name = SMB_VFS_REALPATH(conn,path,resolved_name_buf);
|
||||
if (!resolved_name) {
|
||||
return False;
|
||||
}
|
||||
pstrcpy(path, resolved_name);
|
||||
return True;
|
||||
#endif /* REALPATH_TAKES_NULL */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
Ensure when setting connectpath it is a canonicalized (no ./ // or ../)
|
||||
absolute path stating in / and not ending in /.
|
||||
|
@ -792,31 +792,6 @@ char *vfs_GetWd(connection_struct *conn, char *path)
|
||||
return (path);
|
||||
}
|
||||
|
||||
BOOL canonicalize_path(connection_struct *conn, pstring path)
|
||||
{
|
||||
#ifdef REALPATH_TAKES_NULL
|
||||
char *resolved_name = SMB_VFS_REALPATH(conn,path,NULL);
|
||||
if (!resolved_name) {
|
||||
return False;
|
||||
}
|
||||
pstrcpy(path, resolved_name);
|
||||
SAFE_FREE(resolved_name);
|
||||
return True;
|
||||
#else
|
||||
#ifdef PATH_MAX
|
||||
char resolved_name_buf[PATH_MAX+1];
|
||||
#else
|
||||
pstring resolved_name_buf;
|
||||
#endif
|
||||
char *resolved_name = SMB_VFS_REALPATH(conn,path,resolved_name_buf);
|
||||
if (!resolved_name) {
|
||||
return False;
|
||||
}
|
||||
pstrcpy(path, resolved_name);
|
||||
return True;
|
||||
#endif /* REALPATH_TAKES_NULL */
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
Reduce a file name, removing .. elements and checking that
|
||||
it is below dir in the heirachy. This uses realpath.
|
||||
|
Reference in New Issue
Block a user