diff options
Diffstat (limited to 'source3/libsmb/libsmb_dir.c')
-rw-r--r-- | source3/libsmb/libsmb_dir.c | 60 |
1 files changed, 32 insertions, 28 deletions
diff --git a/source3/libsmb/libsmb_dir.c b/source3/libsmb/libsmb_dir.c index ea75dbf264..700196c10c 100644 --- a/source3/libsmb/libsmb_dir.c +++ b/source3/libsmb/libsmb_dir.c @@ -24,12 +24,13 @@ #include "includes.h" #include "libsmb/libsmb.h" -#include "popt_common.h" +#include "auth_info.h" #include "libsmbclient.h" #include "libsmb_internal.h" #include "rpc_client/cli_pipe.h" #include "../librpc/gen_ndr/ndr_srvsvc_c.h" #include "libsmb/nmblib.h" +#include "../libcli/smb/smbXcli_base.h" /* * Routine to open a directory @@ -554,7 +555,7 @@ SMBC_opendir_ctx(SMBCCTX *context, } workgroup = talloc_strdup(frame, wg_ptr); - server = talloc_strdup(frame, cli->desthost); + server = talloc_strdup(frame, smbXcli_conn_remote_name(cli->conn)); cli_shutdown(cli); @@ -807,9 +808,10 @@ SMBC_opendir_ctx(SMBCCTX *context, return NULL; } - if (!cli_resolve_path(frame, "", context->internal->auth_info, - srv->cli, path, - &targetcli, &targetpath)) { + status = cli_resolve_path( + frame, "", context->internal->auth_info, + srv->cli, path, &targetcli, &targetpath); + if (!NT_STATUS_IS_OK(status)) { d_printf("Could not resolve %s\n", path); if (dir) { SAFE_FREE(dir->fname); @@ -1161,6 +1163,7 @@ SMBC_mkdir_ctx(SMBCCTX *context, char *targetpath = NULL; struct cli_state *targetcli = NULL; TALLOC_CTX *frame = talloc_stackframe(); + NTSTATUS status; if (!context || !context->internal->initialized) { errno = EINVAL; @@ -1211,9 +1214,9 @@ SMBC_mkdir_ctx(SMBCCTX *context, } /*d_printf(">>>mkdir: resolving %s\n", path);*/ - if (!cli_resolve_path(frame, "", context->internal->auth_info, - srv->cli, path, - &targetcli, &targetpath)) { + status = cli_resolve_path(frame, "", context->internal->auth_info, + srv->cli, path, &targetcli, &targetpath); + if (!NT_STATUS_IS_OK(status)) { d_printf("Could not resolve %s\n", path); errno = ENOENT; TALLOC_FREE(frame); @@ -1269,6 +1272,7 @@ SMBC_rmdir_ctx(SMBCCTX *context, char *targetpath = NULL; struct cli_state *targetcli = NULL; TALLOC_CTX *frame = talloc_stackframe(); + NTSTATUS status; if (!context || !context->internal->initialized) { errno = EINVAL; @@ -1319,9 +1323,9 @@ SMBC_rmdir_ctx(SMBCCTX *context, } /*d_printf(">>>rmdir: resolving %s\n", path);*/ - if (!cli_resolve_path(frame, "", context->internal->auth_info, - srv->cli, path, - &targetcli, &targetpath)) { + status = cli_resolve_path(frame, "", context->internal->auth_info, + srv->cli, path, &targetcli, &targetpath); + if (!NT_STATUS_IS_OK(status)) { d_printf("Could not resolve %s\n", path); errno = ENOENT; TALLOC_FREE(frame); @@ -1338,7 +1342,6 @@ SMBC_rmdir_ctx(SMBCCTX *context, /* Local storage to avoid buffer overflows */ char *lpath; bool smbc_rmdir_dirempty = true; - NTSTATUS status; lpath = talloc_asprintf(frame, "%s\\*", targetpath); @@ -1555,6 +1558,7 @@ SMBC_chmod_ctx(SMBCCTX *context, char *path = NULL; uint16 mode; TALLOC_CTX *frame = talloc_stackframe(); + NTSTATUS status; if (!context || !context->internal->initialized) { @@ -1604,9 +1608,9 @@ SMBC_chmod_ctx(SMBCCTX *context, } /*d_printf(">>>unlink: resolving %s\n", path);*/ - if (!cli_resolve_path(frame, "", context->internal->auth_info, - srv->cli, path, - &targetcli, &targetpath)) { + status = cli_resolve_path(frame, "", context->internal->auth_info, + srv->cli, path, &targetcli, &targetpath); + if (!NT_STATUS_IS_OK(status)) { d_printf("Could not resolve %s\n", path); errno = ENOENT; TALLOC_FREE(frame); @@ -1747,6 +1751,7 @@ SMBC_unlink_ctx(SMBCCTX *context, struct cli_state *targetcli = NULL; SMBCSRV *srv = NULL; TALLOC_CTX *frame = talloc_stackframe(); + NTSTATUS status; if (!context || !context->internal->initialized) { @@ -1797,9 +1802,9 @@ SMBC_unlink_ctx(SMBCCTX *context, } /*d_printf(">>>unlink: resolving %s\n", path);*/ - if (!cli_resolve_path(frame, "", context->internal->auth_info, - srv->cli, path, - &targetcli, &targetpath)) { + status = cli_resolve_path(frame, "", context->internal->auth_info, + srv->cli, path, &targetcli, &targetpath); + if (!NT_STATUS_IS_OK(status)) { d_printf("Could not resolve %s\n", path); errno = ENOENT; TALLOC_FREE(frame); @@ -1814,7 +1819,7 @@ SMBC_unlink_ctx(SMBCCTX *context, if (errno == EACCES) { /* Check if the file is a directory */ int saverr = errno; - SMB_OFF_T size = 0; + off_t size = 0; uint16 mode = 0; struct timespec write_time_ts; struct timespec access_time_ts; @@ -1882,6 +1887,7 @@ SMBC_rename_ctx(SMBCCTX *ocontext, struct cli_state *targetcli2 = NULL; SMBCSRV *srv = NULL; TALLOC_CTX *frame = talloc_stackframe(); + NTSTATUS status; if (!ocontext || !ncontext || !ocontext->internal->initialized || @@ -1971,10 +1977,9 @@ SMBC_rename_ctx(SMBCCTX *ocontext, password1); /*d_printf(">>>rename: resolving %s\n", path1);*/ - if (!cli_resolve_path(frame, "", ocontext->internal->auth_info, - srv->cli, - path1, - &targetcli1, &targetpath1)) { + status = cli_resolve_path(frame, "", ocontext->internal->auth_info, + srv->cli, path1, &targetcli1, &targetpath1); + if (!NT_STATUS_IS_OK(status)) { d_printf("Could not resolve %s\n", path1); errno = ENOENT; TALLOC_FREE(frame); @@ -1989,10 +1994,9 @@ SMBC_rename_ctx(SMBCCTX *ocontext, /*d_printf(">>>rename: resolved path as %s\n", targetpath1);*/ /*d_printf(">>>rename: resolving %s\n", path2);*/ - if (!cli_resolve_path(frame, "", ncontext->internal->auth_info, - srv->cli, - path2, - &targetcli2, &targetpath2)) { + status = cli_resolve_path(frame, "", ncontext->internal->auth_info, + srv->cli, path2, &targetcli2, &targetpath2); + if (!NT_STATUS_IS_OK(status)) { d_printf("Could not resolve %s\n", path2); errno = ENOENT; TALLOC_FREE(frame); @@ -2000,7 +2004,7 @@ SMBC_rename_ctx(SMBCCTX *ocontext, } /*d_printf(">>>rename: resolved path as %s\n", targetpath2);*/ - if (strcmp(targetcli1->desthost, targetcli2->desthost) || + if (strcmp(smbXcli_conn_remote_name(targetcli1->conn), smbXcli_conn_remote_name(targetcli2->conn)) || strcmp(targetcli1->share, targetcli2->share)) { /* can't rename across file systems */ |