diff options
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/vfs-wrap.c | 30 | ||||
-rw-r--r-- | source3/smbd/vfs.c | 2 |
2 files changed, 32 insertions, 0 deletions
diff --git a/source3/smbd/vfs-wrap.c b/source3/smbd/vfs-wrap.c index eff72c1f10..b2d73561af 100644 --- a/source3/smbd/vfs-wrap.c +++ b/source3/smbd/vfs-wrap.c @@ -589,6 +589,36 @@ int vfswrap_readlink(connection_struct *conn, const char *path, char *buf, size_ return result; } +int vfswrap_link(connection_struct *conn, const char *oldpath, const char *newpath) +{ + int result; + + START_PROFILE(syscall_link); + +#ifdef VFS_CHECK_NULL + if ((oldpath == NULL) || (newpath == NULL)) + smb_panic("NULL pointer passed to vfswrap_link()\n"); +#endif + result = sys_link(oldpath, newpath); + END_PROFILE(syscall_link); + return result; +} + +int vfswrap_mknod(connection_struct *conn, const char *pathname, mode_t mode, SMB_DEV_T dev) +{ + int result; + + START_PROFILE(syscall_mknod); + +#ifdef VFS_CHECK_NULL + if (pathname == NULL) + smb_panic("NULL pointer passed to vfswrap_mknod()\n"); +#endif + result = sys_mknod(pathname, mode, dev); + END_PROFILE(syscall_mknod); + return result; +} + size_t vfswrap_fget_nt_acl(files_struct *fsp, int fd, SEC_DESC **ppdesc) { size_t result; diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c index afdfe8c48f..2396a43d48 100644 --- a/source3/smbd/vfs.c +++ b/source3/smbd/vfs.c @@ -72,6 +72,8 @@ static struct vfs_ops default_vfs_ops = { vfswrap_lock, vfswrap_symlink, vfswrap_readlink, + vfswrap_link, + vfswrap_mknod, vfswrap_fget_nt_acl, vfswrap_get_nt_acl, |