diff options
author | Derrell Lipman <derrell@dworkin.(none)> | 2009-03-27 18:02:46 -0400 |
---|---|---|
committer | Derrell Lipman <derrell@dworkin.(none)> | 2009-03-27 18:02:46 -0400 |
commit | c33f3d5cba21c8cf267daab5450bc95ea7e68967 (patch) | |
tree | f7e1ec8119dfa99e012aa587a1e68a5e2222298c /source3/libsmb | |
parent | 4b88f2c17e18f87d8ba0e35e057d7bb8a27614dd (diff) | |
download | samba-c33f3d5cba21c8cf267daab5450bc95ea7e68967.tar.gz samba-c33f3d5cba21c8cf267daab5450bc95ea7e68967.tar.bz2 samba-c33f3d5cba21c8cf267daab5450bc95ea7e68967.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
Diffstat (limited to 'source3/libsmb')
-rw-r--r-- | source3/libsmb/libsmb_dir.c | 8 | ||||
-rw-r--r-- | source3/libsmb/libsmb_file.c | 7 | ||||
-rw-r--r-- | source3/libsmb/libsmb_stat.c | 1 |
3 files changed, 15 insertions, 1 deletions
diff --git a/source3/libsmb/libsmb_dir.c b/source3/libsmb/libsmb_dir.c index 2255db6617..219bbe64e1 100644 --- a/source3/libsmb/libsmb_dir.c +++ b/source3/libsmb/libsmb_dir.c @@ -1171,7 +1171,8 @@ SMBC_mkdir_ctx(SMBCCTX *context, 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);*/ @@ -1278,6 +1279,7 @@ SMBC_rmdir_ctx(SMBCCTX *context, srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -1561,6 +1563,7 @@ SMBC_chmod_ctx(SMBCCTX *context, srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -1753,6 +1756,7 @@ SMBC_unlink_ctx(SMBCCTX *context, srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -1927,6 +1931,7 @@ SMBC_rename_ctx(SMBCCTX *ocontext, path1, &targetcli1, &targetpath1)) { d_printf("Could not resolve %s\n", path1); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -1944,6 +1949,7 @@ SMBC_rename_ctx(SMBCCTX *ocontext, path2, &targetcli2, &targetpath2)) { d_printf("Could not resolve %s\n", path2); + errno = ENOENT; TALLOC_FREE(frame); return -1; } diff --git a/source3/libsmb/libsmb_file.c b/source3/libsmb/libsmb_file.c index 06e41ad21e..aa02807092 100644 --- a/source3/libsmb/libsmb_file.c +++ b/source3/libsmb/libsmb_file.c @@ -119,6 +119,7 @@ SMBC_open_ctx(SMBCCTX *context, srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; SAFE_FREE(file); TALLOC_FREE(frame); return NULL; @@ -300,6 +301,7 @@ SMBC_read_ctx(SMBCCTX *context, file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -390,6 +392,7 @@ SMBC_write_ctx(SMBCCTX *context, file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -466,6 +469,7 @@ SMBC_close_ctx(SMBCCTX *context, file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -549,6 +553,7 @@ SMBC_getatr(SMBCCTX * context, srv->cli, fixedpath, &targetcli, &targetpath)) { d_printf("Couldn't resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return False; } @@ -762,6 +767,7 @@ SMBC_lseek_ctx(SMBCCTX *context, file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } @@ -854,6 +860,7 @@ SMBC_ftruncate_ctx(SMBCCTX *context, file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } diff --git a/source3/libsmb/libsmb_stat.c b/source3/libsmb/libsmb_stat.c index dc904d2753..c2806daddb 100644 --- a/source3/libsmb/libsmb_stat.c +++ b/source3/libsmb/libsmb_stat.c @@ -261,6 +261,7 @@ SMBC_fstat_ctx(SMBCCTX *context, file->srv->cli, path, &targetcli, &targetpath)) { d_printf("Could not resolve %s\n", path); + errno = ENOENT; TALLOC_FREE(frame); return -1; } |