diff options
author | Volker Lendecke <vl@samba.org> | 2008-01-21 20:24:23 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-01-22 12:29:02 +0100 |
commit | a4c2b04a2b46fd308e98cc83c26de8307f5196a5 (patch) | |
tree | 61b5ba52f477e7c62ec7650ff48c367402f4d645 | |
parent | f5df4a100accd163dcd4f41e3bbcd17bb655d1fe (diff) | |
download | samba-a4c2b04a2b46fd308e98cc83c26de8307f5196a5.tar.gz samba-a4c2b04a2b46fd308e98cc83c26de8307f5196a5.tar.xz samba-a4c2b04a2b46fd308e98cc83c26de8307f5196a5.zip |
Hide streams from the EA API
(This used to be commit e9bb3d5067b74a29beb778f85687829778e42b5b)
-rw-r--r-- | source3/include/smb.h | 2 | ||||
-rw-r--r-- | source3/modules/vfs_streams_xattr.c | 14 | ||||
-rw-r--r-- | source3/smbd/trans2.c | 8 |
3 files changed, 14 insertions, 10 deletions
diff --git a/source3/include/smb.h b/source3/include/smb.h index 25421115c85..7de3568701f 100644 --- a/source3/include/smb.h +++ b/source3/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/source3/modules/vfs_streams_xattr.c b/source3/modules/vfs_streams_xattr.c index 965d57ff88d..766e7d10ab1 100644 --- a/source3/modules/vfs_streams_xattr.c +++ b/source3/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/source3/smbd/trans2.c b/source3/smbd/trans2.c index 896d2dee142..b5b3ea751b5 100644 --- a/source3/smbd/trans2.c +++ b/source3/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; } /**************************************************************************** |