summaryrefslogtreecommitdiffstats
path: root/source/libsmb
diff options
context:
space:
mode:
authorDerrell Lipman <derrell@dworkin.(none)>2009-03-27 16:56:33 -0400
committerKarolin Seeger <kseeger@samba.org>2009-03-31 16:17:06 +0200
commitd5ef2e4cbfac6962b647a220047eb27f1786a1b4 (patch)
tree060580b55c781a12c50eea45f7ad4eb633b118ff /source/libsmb
parent595e8876aecfab12b40fec5c9d8737af1b8a1bab (diff)
downloadsamba-d5ef2e4cbfac6962b647a220047eb27f1786a1b4.tar.gz
samba-d5ef2e4cbfac6962b647a220047eb27f1786a1b4.tar.xz
samba-d5ef2e4cbfac6962b647a220047eb27f1786a1b4.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 d72271908e0d67eb31fbc1d818d6f2c720bd7fbb)
Diffstat (limited to 'source/libsmb')
-rw-r--r--source/libsmb/libsmb_dir.c8
-rw-r--r--source/libsmb/libsmb_file.c7
-rw-r--r--source/libsmb/libsmb_stat.c1
3 files changed, 15 insertions, 1 deletions
diff --git a/source/libsmb/libsmb_dir.c b/source/libsmb/libsmb_dir.c
index 89782ce2a1d..8846abb9f6b 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 1bbb47daebe..8741ed6c6eb 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 64ddc780a8d..9e081afa8f8 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;
}