From c33f3d5cba21c8cf267daab5450bc95ea7e68967 Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Fri, 27 Mar 2009 18:02:46 -0400 Subject: [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 --- source3/libsmb/libsmb_dir.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'source3/libsmb/libsmb_dir.c') 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; } -- cgit