s3: VFS: vfs_streams_xattr.c: Make streams_xattr_open() store the same path as stream...
authorJeremy Allison <jra@samba.org>
Wed, 1 Feb 2017 19:36:25 +0000 (11:36 -0800)
committerJeremy Allison <jra@samba.org>
Thu, 2 Feb 2017 00:55:42 +0000 (01:55 +0100)
If the open is changing directories, fsp->fsp_name->base_name
will be the full path from the share root, whilst
smb_fname will be relative to the $cwd.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=12546

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Böhme <slow@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Thu Feb  2 01:55:42 CET 2017 on sn-devel-144

source3/modules/vfs_streams_xattr.c

index d9eb2e10852d9dbf559fa1a20aba092376d2b3f6..d3c988c9c5e35f9399675f46416ef5f011702fed 100644 (file)
@@ -527,8 +527,15 @@ static int streams_xattr_open(vfs_handle_struct *handle,
 
         sio->xattr_name = talloc_strdup(VFS_MEMCTX_FSP_EXTENSION(handle, fsp),
                                        xattr_name);
+       /*
+        * so->base needs to be a copy of fsp->fsp_name->base_name,
+        * making it identical to streams_xattr_recheck(). If the
+        * open is changing directories, fsp->fsp_name->base_name
+        * will be the full path from the share root, whilst
+        * smb_fname will be relative to the $cwd.
+        */
         sio->base = talloc_strdup(VFS_MEMCTX_FSP_EXTENSION(handle, fsp),
-                                 smb_fname->base_name);
+                                 fsp->fsp_name->base_name);
        sio->fsp_name_ptr = fsp->fsp_name;
        sio->handle = handle;
        sio->fsp = fsp;