summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2020-02-19 14:44:11 +0100
committerJeremy Allison <jra@samba.org>2020-02-20 20:48:29 +0000
commit305204a241b74c599f4f6a064cac6608afd9c893 (patch)
tree0c317f6adfb62c36521c70099ec9eff2d520718d
parent8441471d5dca8657d8bb40e83096a4965818eb5c (diff)
downloadsamba-305204a241b74c599f4f6a064cac6608afd9c893.tar.gz
test: Intercept open in vfs_error_inject
Bug: https://bugzilla.samba.org/show_bug.cgi?id=14285 Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r--source3/modules/vfs_error_inject.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/source3/modules/vfs_error_inject.c b/source3/modules/vfs_error_inject.c
index c8c3ea4701f..c7a99370b2a 100644
--- a/source3/modules/vfs_error_inject.c
+++ b/source3/modules/vfs_error_inject.c
@@ -29,6 +29,7 @@ struct unix_error_map {
} unix_error_map_array[] = {
{ "ESTALE", ESTALE },
{ "EBADF", EBADF },
+ { "EINTR", EINTR },
};
static int find_unix_error_from_string(const char *err_str)
@@ -106,9 +107,25 @@ static ssize_t vfs_error_inject_pwrite(vfs_handle_struct *handle,
return SMB_VFS_NEXT_PWRITE(handle, fsp, data, n, offset);
}
+static int vfs_error_inject_open(
+ struct vfs_handle_struct *handle,
+ struct smb_filename *smb_fname,
+ files_struct *fsp,
+ int flags,
+ mode_t mode)
+{
+ int error = inject_unix_error("open", handle);
+ if (error != 0) {
+ errno = error;
+ return -1;
+ }
+ return SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
+}
+
static struct vfs_fn_pointers vfs_error_inject_fns = {
.chdir_fn = vfs_error_inject_chdir,
.pwrite_fn = vfs_error_inject_pwrite,
+ .open_fn = vfs_error_inject_open,
};
static_decl_vfs;