summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@redhat.com>2012-12-03 15:46:01 +0100
committerTomas Bzatek <tbzatek@redhat.com>2012-12-03 15:46:01 +0100
commitcf7f98995591f6c992467337469df41756c76b04 (patch)
tree109e6731eeca12f8dac681db5d1484f863a6a983
parentc2b246c8e9ee67034aa0e0017516bc0f05448783 (diff)
downloadgvfs-cf7f98995591f6c992467337469df41756c76b04.tar.gz
smb: Report proper error on do_query_fs_info()
We always reported success despite storing the smb call result. https://bugzilla.gnome.org/show_bug.cgi?id=687778
-rw-r--r--daemon/gvfsbackendsmb.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c
index abdab9ca..f69bc1b5 100644
--- a/daemon/gvfsbackendsmb.c
+++ b/daemon/gvfsbackendsmb.c
@@ -1633,7 +1633,7 @@ do_query_fs_info (GVfsBackend *backend,
smbc_statvfs_fn smbc_statvfs;
struct statvfs st = {0};
char *uri;
- int res;
+ int res, saved_errno;
if (g_file_attribute_matcher_matches (attribute_matcher,
G_FILE_ATTRIBUTE_FILESYSTEM_SIZE) ||
@@ -1645,6 +1645,7 @@ do_query_fs_info (GVfsBackend *backend,
uri = create_smb_uri (op_backend->server, op_backend->share, filename);
smbc_statvfs = smbc_getFunctionStatVFS (op_backend->smb_context);
res = smbc_statvfs (op_backend->smb_context, uri, &st);
+ saved_errno = errno;
g_free (uri);
if (res == 0)
@@ -1661,6 +1662,11 @@ do_query_fs_info (GVfsBackend *backend,
g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_FILESYSTEM_READONLY, st.f_flag & SMBC_VFS_FEATURE_RDONLY);
}
}
+ else
+ {
+ g_vfs_job_failed_from_errno (G_VFS_JOB (job), saved_errno);
+ return;
+ }
}
#endif