diff options
author | Derrell Lipman <derrell@dworkin.(none)> | 2009-03-27 17:10:04 -0400 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2009-03-30 12:02:45 +0200 |
commit | bc6a6816ea5332d98b6c49bb8080b9c3524d41a1 (patch) | |
tree | 477e4bba96334d07c2f71693516e430fb48e43f9 | |
parent | 8a5d0e0989ea0ba40b0d08752248c3d2e4fb061b (diff) | |
download | samba-bc6a6816ea5332d98b6c49bb8080b9c3524d41a1.tar.gz samba-bc6a6816ea5332d98b6c49bb8080b9c3524d41a1.tar.xz samba-bc6a6816ea5332d98b6c49bb8080b9c3524d41a1.zip |
[Bug 6228] SMBC_open_ctx failure due to path resolve failure doesn't set errno
Fixed.
It turns out there were a number of places where cli_resolve_path() was called
and the error path upon that function failing did not set errno. There were a
couple of places the failure handling code did set errno to ENOENT, so I made
them all consistent, although I think better errno choices for this condition
exist, e.g. EHOSTUNREACH.
Derrell
(cherry picked from commit f4e68b09a6ba30d968bccfad8bf6b67b4456b111)
-rw-r--r-- | source/libsmb/libsmb_dir.c | 8 | ||||
-rw-r--r-- | source/libsmb/libsmb_file.c | 7 | ||||
-rw-r--r-- | source/libsmb/libsmb_stat.c | 1 |
3 files changed, 15 insertions, 1 deletions
diff --git a/source/libsmb/libsmb_dir.c b/source/libsmb/libsmb_dir.c index b0762e89a34..8ce660a7b6c 100644 --- a/source/libsmb/libsmb_dir.c +++ b/source/libsmb/libsmb_dir.c @@ -1168,7 +1168,8 @@ SMBC_mkdir_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); - TALLOC_FREE(frame); + errno = ENOENT; + TALLOC_FREE(frame); return -1; } /*d_printf(">>>mkdir: resolved path as %s\n", targetpath);*/ @@ -1275,6 +1276,7 @@ SMBC_rmdir_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -1738,6 +1740,8 @@ SMBC_unlink_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -1904,6 +1908,7 @@ SMBC_rename_ctx(SMBCCTX *ocontext, if (!cli_resolve_path(frame, "", srv->cli, path1, &targetcli1, &targetpath1)) { d_printf("Could not resolve %s\n", path1); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -1912,6 +1917,7 @@ SMBC_rename_ctx(SMBCCTX *ocontext, if (!cli_resolve_path(frame, "", srv->cli, path2, &targetcli2, &targetpath2)) { d_printf("Could not resolve %s\n", path2); + errno = ENOENT; TALLOC_FREE(frame); return -1; } diff --git a/source/libsmb/libsmb_file.c b/source/libsmb/libsmb_file.c index 27b7e4f823b..a8c26291ce6 100644 --- a/source/libsmb/libsmb_file.c +++ b/source/libsmb/libsmb_file.c @@ -118,6 +118,7 @@ SMBC_open_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; SAFE_FREE(file); TALLOC_FREE(frame); return NULL; @@ -298,6 +299,7 @@ SMBC_read_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -387,6 +389,7 @@ SMBC_write_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -462,6 +465,7 @@ SMBC_close_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -544,6 +548,7 @@ SMBC_getatr(SMBCCTX * context, if (!cli_resolve_path(frame, "", srv->cli, fixedpath, &targetcli, &targetpath)) { d_printf("Couldn't resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return False; } @@ -756,6 +761,7 @@ SMBC_lseek_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -847,6 +853,7 @@ SMBC_ftruncate_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } diff --git a/source/libsmb/libsmb_stat.c b/source/libsmb/libsmb_stat.c index 27546f687ed..2aa4cffc555 100644 --- a/source/libsmb/libsmb_stat.c +++ b/source/libsmb/libsmb_stat.c @@ -260,6 +260,7 @@ SMBC_fstat_ctx(SMBCCTX *context, if (!cli_resolve_path(frame, "", file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } |