diff options
author | Volker Lendecke <vl@samba.org> | 2020-02-19 14:44:11 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2020-02-20 20:48:29 +0000 |
commit | 305204a241b74c599f4f6a064cac6608afd9c893 (patch) | |
tree | 0c317f6adfb62c36521c70099ec9eff2d520718d | |
parent | 8441471d5dca8657d8bb40e83096a4965818eb5c (diff) | |
download | samba-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.c | 17 |
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; |