The branch, v3-2-test has been updated
       via  e9bb3d5067b74a29beb778f85687829778e42b5b (commit)
      from  2f460915111066d79f5dc9b4ae4d003918d06852 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit e9bb3d5067b74a29beb778f85687829778e42b5b
Author: Volker Lendecke <[EMAIL PROTECTED]>
Date:   Mon Jan 21 20:24:23 2008 +0100

    Hide streams from the EA API

-----------------------------------------------------------------------

Summary of changes:
 source/include/smb.h               |    2 ++
 source/modules/vfs_streams_xattr.c |   14 ++++++--------
 source/smbd/trans2.c               |    8 ++++++--
 3 files changed, 14 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/smb.h b/source/include/smb.h
index 2542111..7de3568 100644
--- a/source/include/smb.h
+++ b/source/include/smb.h
@@ -1904,6 +1904,8 @@ struct ea_list {
 #define SAMBA_POSIX_INHERITANCE_EA_NAME "user.SAMBA_PAI"
 /* EA to use for DOS attributes */
 #define SAMBA_XATTR_DOS_ATTRIB "user.DOSATTRIB"
+/* Prefix for DosStreams in the vfs_streams_xattr module */
+#define SAMBA_XATTR_DOSSTREAM_PREFIX "user.DosStream."
 
 #define UUID_SIZE 16
 
diff --git a/source/modules/vfs_streams_xattr.c 
b/source/modules/vfs_streams_xattr.c
index 965d57f..766e7d1 100644
--- a/source/modules/vfs_streams_xattr.c
+++ b/source/modules/vfs_streams_xattr.c
@@ -26,8 +26,6 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_VFS
 
-#define XATTR_DOSSTREAM_PREFIX "user.DosStream."
-
 struct stream_io {
        char *base;
        char *xattr_name;
@@ -140,7 +138,7 @@ static int streams_xattr_stat(vfs_handle_struct *handle, 
const char *fname,
        }
 
        xattr_name = talloc_asprintf(talloc_tos(), "%s%s",
-                                    XATTR_DOSSTREAM_PREFIX, sname);
+                                    SAMBA_XATTR_DOSSTREAM_PREFIX, sname);
        if (xattr_name == NULL) {
                errno = ENOMEM;
                goto fail;
@@ -187,7 +185,7 @@ static int streams_xattr_lstat(vfs_handle_struct *handle, 
const char *fname,
        }
 
        xattr_name = talloc_asprintf(talloc_tos(), "%s%s",
-                                    XATTR_DOSSTREAM_PREFIX, sname);
+                                    SAMBA_XATTR_DOSSTREAM_PREFIX, sname);
        if (xattr_name == NULL) {
                errno = ENOMEM;
                goto fail;
@@ -239,7 +237,7 @@ static int streams_xattr_open(vfs_handle_struct *handle,  
const char *fname,
        }
 
        xattr_name = talloc_asprintf(talloc_tos(), "%s%s",
-                                    XATTR_DOSSTREAM_PREFIX, sname);
+                                    SAMBA_XATTR_DOSSTREAM_PREFIX, sname);
        if (xattr_name == NULL) {
                errno = ENOMEM;
                goto fail;
@@ -373,7 +371,7 @@ static int streams_xattr_unlink(vfs_handle_struct *handle,  
const char *fname)
        }
 
        xattr_name = talloc_asprintf(talloc_tos(), "%s%s",
-                                    XATTR_DOSSTREAM_PREFIX, sname);
+                                    SAMBA_XATTR_DOSSTREAM_PREFIX, sname);
        if (xattr_name == NULL) {
                errno = ENOMEM;
                goto fail;
@@ -403,7 +401,7 @@ static NTSTATUS walk_xattr_streams(connection_struct *conn, 
files_struct *fsp,
        NTSTATUS status;
        char **names;
        size_t i, num_names;
-       size_t prefix_len = strlen(XATTR_DOSSTREAM_PREFIX);
+       size_t prefix_len = strlen(SAMBA_XATTR_DOSSTREAM_PREFIX);
 
        status = get_ea_names_from_file(talloc_tos(), conn, fsp, fname,
                                        &names, &num_names);
@@ -414,7 +412,7 @@ static NTSTATUS walk_xattr_streams(connection_struct *conn, 
files_struct *fsp,
        for (i=0; i<num_names; i++) {
                struct ea_struct ea;
 
-               if (strncmp(names[i], XATTR_DOSSTREAM_PREFIX,
+               if (strncmp(names[i], SAMBA_XATTR_DOSSTREAM_PREFIX,
                            prefix_len) != 0) {
                        continue;
                }
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index 896d2de..b5b3ea7 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -105,9 +105,13 @@ static bool samba_private_attr_name(const char 
*unix_ea_name)
 
        for (i = 0; prohibited_ea_names[i]; i++) {
                if (strequal( prohibited_ea_names[i], unix_ea_name))
-                       return True;
+                       return true;
        }
-       return False;
+       if (StrnCaseCmp(unix_ea_name, SAMBA_XATTR_DOSSTREAM_PREFIX,
+                       strlen(SAMBA_XATTR_DOSSTREAM_PREFIX)) == 0) {
+               return true;
+       }
+       return false;
 }
 
 /****************************************************************************


-- 
Samba Shared Repository

Reply via email to