summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/vfs-wrap.c30
-rw-r--r--source3/smbd/vfs.c2
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,