The branch, v3-3-test has been updated via b24583e17ac845d327e1f20f4c6f30215bb3815e (commit) via d72271908e0d67eb31fbc1d818d6f2c720bd7fbb (commit) from 58d3ec1cb81d6086d65cd12acd16cd591cf0c71f (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test - Log ----------------------------------------------------------------- commit b24583e17ac845d327e1f20f4c6f30215bb3815e Merge: d72271908e0d67eb31fbc1d818d6f2c720bd7fbb 58d3ec1cb81d6086d65cd12acd16cd591cf0c71f Author: Derrell Lipman <derr...@dworkin.(none)> Date: Fri Mar 27 18:03:36 2009 -0400 Merge branch 'v3-3-test' of ssh://git.samba.org/data/git/samba into v3-3-test commit d72271908e0d67eb31fbc1d818d6f2c720bd7fbb Author: Derrell Lipman <derr...@dworkin.(none)> Date: Fri Mar 27 16:56:33 2009 -0400 [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 ----------------------------------------------------------------------- Summary of changes: source/libsmb/libsmb_dir.c | 8 +++++++- source/libsmb/libsmb_file.c | 7 +++++++ source/libsmb/libsmb_stat.c | 1 + 3 files changed, 15 insertions(+), 1 deletions(-) Changeset truncated at 500 lines: diff --git a/source/libsmb/libsmb_dir.c b/source/libsmb/libsmb_dir.c index 89782ce..8846abb 100644 --- a/source/libsmb/libsmb_dir.c +++ b/source/libsmb/libsmb_dir.c @@ -1169,7 +1169,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);*/ @@ -1276,6 +1277,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; } @@ -1558,6 +1560,7 @@ SMBC_chmod_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; } @@ -1749,6 +1752,7 @@ 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; TALLOC_FREE(frame); return -1; } @@ -1921,6 +1925,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; } @@ -1936,6 +1941,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 1bbb47d..8741ed6 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 64ddc78..9e081af 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; } -- Samba Shared Repository