The branch, v4-20-test has been updated
       via  b4c8927881a mdssvc: support a few more attributes
       via  edb719760b1 vfs_gpfs: add gpfs:clamp_invalid_times
       via  f3d65a377ad ndr: fix coda logic around in ndr_pull_security_ace()
       via  a74d5beb2ac pytest: add ndr packing tests for security descriptors
       via  787ced312a4 vfs_ceph_new:minor logging improvement
       via  d5483429ee5 vfs_ceph_new: add smbprofile for async-ops
       via  6aa52e530c1 vfs_ceph_new: add profiling support
       via  f26f0ab3aa8 vfs_ceph_new: log open-flags upon release-fh
       via  f03df137fc5 vfs_ceph_new: improved vfs-opers logging
       via  6d68b61c32e vfs_ceph_new: improved mount logging
       via  6a09316d29c vfs_ceph_new: improve mount cache-entry add
       via  00d505ae38e vfs_ceph_new: improve mount cache-entry ref-count
       via  3d934ff47e3 vfs_ceph_new: avoid setting errno in 
cephmount_cache_update
       via  191d67baead vfs_ceph_new: refactor error-case in cephmount_mount_fs
       via  82312356526 vfs_ceph_new: switch to ceph_readdir_r
       via  3b3faed2e07 docs_xml/vfs_ceph_new: Add new proxy option
       via  f176b0374d4 wscript_build: Do not link vfs_ceph_new against 
libcephfs
       via  f74db02aa61 vfs_ceph_new: Use function pointers for API calls
       via  022dd9eb42e vfs_ceph_new: Pass module config to userperm helpers
       via  8f85064175e vfs_ceph_new: Hold a config reference in vfs_ceph_fh
       via  2cc98d39599 vfs_ceph_new: Call vfs_ceph_userperm_new with 
handle->conn
       via  9a91d70044b vfs_ceph_new: Populate function pointers with addresses
       via  aac150ebadf vfs_ceph_new: Add required function pointers to config
       via  ae13462d06f vfs_ceph_new: Dynamically open library for 'proxy' mode
       via  67c9da12354 vfs_ceph_new: Introduce new parametric option 'proxy'
       via  12137411955 vfs_ceph_new: Add a new struct to hold ceph module 
config
       via  608d2d55cac vfs_ceph_new: implement DFS hooks using libcephfs 
low-level APIs
      from  846b8c0d8c7 s4:rpc_server/lsa: let LookupSids* behave like Windows 
2022/2025

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-20-test


- Log -----------------------------------------------------------------
commit b4c8927881a08349f05e061c9918e4e6b76e4b16
Author: Ralph Boehme <[email protected]>
Date:   Wed Jan 29 15:11:16 2025 +0100

    mdssvc: support a few more attributes
    
    This adds support for the following Spotlight Metadata Attributes:
    
      _kMDItemFileName (another alias for kMDItemFSName and kMDItemDisplayName)
      kMDItemLastUsedDate
      kMDItemContentCreationDate
      kMDItemLogicalSize (another alias for kMDItemFSSize)
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15796
    
    Signed-off-by: Ralph Boehme <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>
    (cherry picked from commit 0ba1a8d77694182058d1c01b54a8759bdf0e28a6)
    
    Autobuild-User(v4-20-test): Jule Anger <[email protected]>
    Autobuild-Date(v4-20-test): Mon Feb 17 17:28:37 UTC 2025 on atb-devel-224

commit edb719760b192ddb7b2fca51b1f112f33933524d
Author: Ralph Boehme <[email protected]>
Date:   Wed Jan 22 12:34:31 2025 +0100

    vfs_gpfs: add gpfs:clamp_invalid_times
    
    The timestamp validation added as part of the fix for bug 15151 causes hard
    failures for certain clients that seem to use a temporary timestamp 
initially
    when creating files, changing in a later step.
    
    Clamp invalid timestamps to the allowed range 0..UINT32_MAX if
    "gpfs:clamp_invalid_times = yes" is set.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15151
    
    Signed-off-by: Ralph Boehme <[email protected]>
    Reviewed-by: Christof Schmitt <[email protected]>
    
    Autobuild-User(master): Christof Schmitt <[email protected]>
    Autobuild-Date(master): Wed Feb  5 23:42:15 UTC 2025 on atb-devel-224
    
    (cherry picked from commit 0a48167044bb1ffd9e19cb2e23de9834d0551be1)

commit f3d65a377add30263a4d6cc71feecdfc4eb6009c
Author: Douglas Bagnall <[email protected]>
Date:   Thu Jan 9 16:14:05 2025 +1300

    ndr: fix coda logic around in ndr_pull_security_ace()
    
    Sometimes an access allowed object ACE has unneeded trailing bytes,
    like this:
    
                          aces: struct security_ace
                              type                     : 
SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT (5)
                              flags                    : 0x00 (0)
                                     0: SEC_ACE_FLAG_OBJECT_INHERIT
                                     0: SEC_ACE_FLAG_CONTAINER_INHERIT
                                     0: SEC_ACE_FLAG_NO_PROPAGATE_INHERIT
                                     0: SEC_ACE_FLAG_INHERIT_ONLY
                                     0: SEC_ACE_FLAG_INHERITED_ACE
                                  0x00: SEC_ACE_FLAG_VALID_INHERIT (0)
                                     0: SEC_ACE_FLAG_SUCCESSFUL_ACCESS
                                     0: SEC_ACE_FLAG_FAILED_ACCESS
                              size                     : 0x0048 (72)
                              access_mask              : 0x00000100 (256)
                              object                   : union 
security_ace_object_ctr(case 1)
                              object: struct security_ace_object
                                  flags                    : 0x00000001 (1)
                                         1: SEC_ACE_OBJECT_TYPE_PRESENT
                                         0: 
SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT
                                  type                     : union 
security_ace_object_type(case 1)
                                  type                     : 
edacfd8f-ffb3-11d1-b41d-00a0c968f939
                                  inherited_type           : union 
security_ace_object_inherited_type(case 0)
                              trustee                  : S-1-3-0
                              coda                     : union 
security_ace_coda(case 5)
                              ignored                  : DATA_BLOB length=32
      [0000] 00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   ........ 
........
      [0010] 00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   ........ 
........
    
    which we need to pull in order to ignore.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15738
    
    Signed-off-by: Douglas Bagnall <[email protected]>
    Reviewed-by: Volker Lendecke <[email protected]>
    
    Autobuild-User(master): Volker Lendecke <[email protected]>
    Autobuild-Date(master): Thu Feb 13 15:15:40 UTC 2025 on atb-devel-224
    
    (cherry picked from commit 67b09b481b06080d3f46878d60095f188ff18fb8)
    [bugzilla link added in backport]

commit a74d5beb2acac863007af1c7bd525b0e1403134a
Author: Douglas Bagnall <[email protected]>
Date:   Wed Feb 12 15:29:28 2025 +1300

    pytest: add ndr packing tests for security descriptors
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15738
    
    Signed-off-by: Douglas Bagnall <[email protected]>
    Reviewed-by: Volker Lendecke <[email protected]>
    (cherry picked from commit 455a0558c89312061f3b9ccaa577a4a60df7ee77)
    [bugzilla link added in backport]

commit 787ced312a4e5a213b7f8e5ec5fa442b77e0695e
Author: Shweta Sodani <[email protected]>
Date:   Wed Feb 5 11:21:37 2025 +0530

    vfs_ceph_new:minor logging improvement
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shweta Sodani <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    
    Autobuild-User(master): Günther Deschner <[email protected]>
    Autobuild-Date(master): Fri Feb 14 10:57:50 UTC 2025 on atb-devel-224
    
    (cherry picked from commit 6430e0a9fb7e9c368a3170f9cddd688a49aedb23)

commit d5483429ee544079cd8430a3a4578b0ae271a450
Author: Shachar Sharon <[email protected]>
Date:   Tue Jan 14 11:46:05 2025 +0200

    vfs_ceph_new: add smbprofile for async-ops
    
    Commit fcd3fc34b2ec5e ("vfs_ceph_new: add profiling support") added
    PROFILE accounting for non-async VFS hooks. Add also SMBPROFILE for
    async (read/write/fsync) hooks.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    
    Autobuild-User(master): Günther Deschner <[email protected]>
    Autobuild-Date(master): Fri Jan 17 16:47:28 UTC 2025 on atb-devel-224
    
    (cherry picked from commit 775e08ec7b6a32086266a0f7eba4a107869b1cf6)

commit 6aa52e530c16c81cc6a01a7f3905ebef5138e099
Author: Shweta Sodani <[email protected]>
Date:   Thu Jan 2 19:12:08 2025 +0530

    vfs_ceph_new: add profiling support
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shweta Sodani <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    
    Autobuild-User(master): Günther Deschner <[email protected]>
    Autobuild-Date(master): Mon Jan 13 21:26:34 UTC 2025 on atb-devel-224
    
    (cherry picked from commit fcd3fc34b2ec5e00ad24aaa7276338c9a473c086)

commit f26f0ab3aa81108f51d2decbe674313ddf60820e
Author: Shachar Sharon <[email protected]>
Date:   Sun Oct 6 13:26:48 2024 +0300

    vfs_ceph_new: log open-flags upon release-fh
    
    Store the set of open O_XXX flags as part of the referenced file-handle
    to allow more verbose debug-logging info upon close. This should ease
    the developer's logging analysis where same inode is opened multiple
    times but with different flags set.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: John Mulligan <[email protected]>
    (cherry picked from commit 341ff48a5a787ed358a28037b5ec751b7b530e20)

commit f03df137fc58c15dc5224f3d862ddcd21fff0f4e
Author: Shachar Sharon <[email protected]>
Date:   Wed Sep 11 09:58:53 2024 +0300

    vfs_ceph_new: improved vfs-opers logging
    
    Have more verbose and explicit values in various DBG_DEBUG logging. In
    particular, do not use the redundant '__func__' argument as it's info is
    already provided via the DBG_ logging macros.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: John Mulligan <[email protected]>
    (cherry picked from commit 73d5503a90e3bd5b1d1cfc6322d7de10955faf6c)

commit 6d68b61c32eb32a09c8ca076532741891e85d38e
Author: Shachar Sharon <[email protected]>
Date:   Thu Sep 5 15:08:38 2024 +0300

    vfs_ceph_new: improved mount logging
    
    Add extra debug-logging to mount/umount flows, with more verbose info.
    Try to make logging messages follow a 'key=value' format.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: John Mulligan <[email protected]>
    (cherry picked from commit 2153bedc8eb53e5d9f44ef677bd1781d934abd34)

commit 6a09316d29c0ae97f583196f2624f79cb4a54364
Author: Shachar Sharon <[email protected]>
Date:   Sun Oct 20 11:50:13 2024 +0300

    vfs_ceph_new: improve mount cache-entry add
    
    Use boolean return value from cephmount_cache_add, to align code-style
    with other caphmount helper functions. Returns false in case of memory
    allocation failure, true otherwise (success).
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: John Mulligan <[email protected]>
    (cherry picked from commit 866b872cdb2b08a8b5e6a9015cde9b34c4bcdf01)

commit 00d505ae38e935d4594041533363050523139bbd
Author: Shachar Sharon <[email protected]>
Date:   Thu Sep 5 17:14:59 2024 +0300

    vfs_ceph_new: improve mount cache-entry ref-count
    
    Use singed int32_t for cached mount-entries reference counting. Define
    helper function for inc/dec ref-count which also provides proper
    logging. Prefer boolean return-value for 'cephmount_cache_remove' as
    'int' is often used as error indicator within the context of libcephfs
    and this VFS module.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: John Mulligan <[email protected]>
    (cherry picked from commit 29a9d18d2d21842bb38bcdc6b9e366abac458ed9)

commit 3d934ff47e35e7f3b20b111b3ed3bfd97615e7b2
Author: Shachar Sharon <[email protected]>
Date:   Wed Sep 4 15:59:21 2024 +0300

    vfs_ceph_new: avoid setting errno in cephmount_cache_update
    
    Do not set 'errno' to ENOENT in cephmount_cache_update. Setting this
    errno value upon newly inserted entry may cause vfs_ceph_connect to
    change errno to non-zero value even though the final result is OK.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: John Mulligan <[email protected]>
    (cherry picked from commit 1f7581c9edb32a2a63bf032f7e167be8a401c3d5)

commit 191d67baeadd6d0c2fb09663a6c4b2c6af7e8be9
Author: Shachar Sharon <[email protected]>
Date:   Wed Sep 4 14:55:50 2024 +0300

    vfs_ceph_new: refactor error-case in cephmount_mount_fs
    
    Align code-style of 'cephmount_mount_fs' with rest of the code: use
    'goto' for bail-out upon error case (with proper cleanups). For the
    common case of successful operation complete execution and return final
    value. Added extra debug-logging for good-path case.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: John Mulligan <[email protected]>
    (cherry picked from commit d9b872afeee4dee49de2e6eb86e4b59e07804363)

commit 8231235652671b59f504aa21cbf415a8d666396c
Author: Shachar Sharon <[email protected]>
Date:   Tue Sep 3 16:54:03 2024 +0300

    vfs_ceph_new: switch to ceph_readdir_r
    
    Prefer a safe version of ceph_readdir, where the directory entry struct
    is allocated by the caller. Use a dynamic-allocated 'struct dirent'
    which is associated with a directory vfs_ceph_fh (optional), which is
    allocated on-the-fly upon start of READDIR and released at the end or
    CLOSEDIR (or unlikely readdir error).
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: John Mulligan <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    
    Autobuild-User(master): Anoop C S <[email protected]>
    Autobuild-Date(master): Fri Oct 25 10:29:44 UTC 2024 on atb-devel-224
    
    (cherry picked from commit ce459ddbcd0f32252858a7640f6871057eb14645)

commit 3b3faed2e07ccbfd22c0336a8caa8eeafd82b583
Author: Anoop C S <[email protected]>
Date:   Thu Sep 5 11:45:19 2024 +0530

    docs_xml/vfs_ceph_new: Add new proxy option
    
    Update man page to describe new 'proxy' module option.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    
    Autobuild-User(master): Anoop C S <[email protected]>
    Autobuild-Date(master): Thu Sep 12 16:51:14 UTC 2024 on atb-devel-224
    
    (cherry picked from commit 12ad4832a74a6fba3fb8954a8630b900f5763f18)

commit f176b0374d436f3ebc9b2da0c135f982aecd5aac
Author: Anoop C S <[email protected]>
Date:   Sun Sep 8 12:52:59 2024 +0530

    wscript_build: Do not link vfs_ceph_new against libcephfs
    
    vfs_ceph_new dynamically loads the appropriate libcephfs shared
    libraries which means that we don't statically link against it.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit 095ece43a2edbdeb498e8bef07bdf09f9836bb40)

commit f74db02aa61500a0d9ec2d88debb732bf6832cbe
Author: Anoop C S <[email protected]>
Date:   Thu Sep 5 15:20:28 2024 +0530

    vfs_ceph_new: Use function pointers for API calls
    
    Replace direct function calls with pointers holding their equivalent
    addresses.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit 962a40a6ff51f33adc39e466f1479dfb35ac0926)

commit 022dd9eb42e4d82909d859d9637e83de9e8ddfe8
Author: Anoop C S <[email protected]>
Date:   Thu Sep 5 15:16:54 2024 +0530

    vfs_ceph_new: Pass module config to userperm helpers
    
    userperm helpers will switch to function references instead of direct
    invocation of APIs. This would mean the matching config structure is
    passed to those helpers.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit d5926cf492b1cb81c90b27e0537ec3f1b1a10f80)

commit 8f85064175e5a2d2ee31a5ba7b642611fd65a7e0
Author: Anoop C S <[email protected]>
Date:   Thu Sep 5 14:01:37 2024 +0530

    vfs_ceph_new: Hold a config reference in vfs_ceph_fh
    
    This is required to perform the cleanup when fsp extension destructor is
    called as part of VFS_REMOVE_FSP_EXTENSION where mount information and
    function references are to be used in upcoming changes.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit 250af54250bed87928250b95db663ff13cc1f42a)

commit 2cc98d3959938fbb9e707e80b215cbdab4fb8d61
Author: Anoop C S <[email protected]>
Date:   Thu Sep 5 14:50:48 2024 +0530

    vfs_ceph_new: Call vfs_ceph_userperm_new with handle->conn
    
    vfs_ceph_userperm_new() only need connection structure from handle
    for fetching the current unix token. Therefore modify the signature
    to accept just handle->conn.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit 8c1d774c7e206bb413284d500c5aa950ac3dd3d5)

commit 9a91d70044b78980b66ccd21072179a137e1f38d
Author: Guenther Deschner <[email protected]>
Date:   Thu Sep 5 13:40:27 2024 +0530

    vfs_ceph_new: Populate function pointers with addresses
    
    Use dlysm() for assigning addresses to already declared libcephfs
    low-level API function pointers.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Pair-Programmed-With: Anoop C S <[email protected]>
    Signed-off-by: Guenther Deschner <[email protected]>
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit e4fc1df4b4486f5eed095135f905bdbf10bb1793)

commit aac150ebadf39e7d44c79baddce36e42315a0871
Author: Guenther Deschner <[email protected]>
Date:   Thu Sep 5 13:31:13 2024 +0530

    vfs_ceph_new: Add required function pointers to config
    
    Declare necessary libcephfs low-level APIs as function pointers to be
    assigned with corresponding loadable addresses.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Pair-Programmed-With: Anoop C S <[email protected]>
    Signed-off-by: Guenther Deschner <[email protected]>
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit 0d2ad13d8e5191f4b01584afa0bcdbf1114042b8)

commit ae13462d06fe9ed8c4c1f3172e8890d6a26b300c
Author: Guenther Deschner <[email protected]>
Date:   Thu Sep 5 13:19:52 2024 +0530

    vfs_ceph_new: Dynamically open library for 'proxy' mode
    
    Use dlopen() to load either of the shared libraries(libcephfs.so or
    libcephfs_proxy.so) based on the configuration for 'proxy' module
    parameter. Further down the line we will define the required APIs
    as function pointers within the config structure.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Pair-Programmed-With: Anoop C S <[email protected]>
    Signed-off-by: Guenther Deschner <[email protected]>
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit 47812a279118befbaeffdd6c81e3d49b071f04c5)

commit 67c9da123548394e3b7174594323a6ed89d434dd
Author: Guenther Deschner <[email protected]>
Date:   Thu Sep 5 13:13:38 2024 +0530

    vfs_ceph_new: Introduce new parametric option 'proxy'
    
    Provide early support for consuming yet to come libcephfs proxy[1] for
    optimized resource utilization. For better control we make use of an
    additional module specific option 'proxy' to specify the intent to load
    proxy library. With the default value 'no' a regular cephfs connection
    is established. There is also an 'auto' mode which can fall back to the
    regular connection if proxy requirements are not met.
    
    [1] https://github.com/ceph/ceph/pull/58376
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Guenther Deschner <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit 90464bdcafda0f0f0e4d2b549fd1675c076ee188)

commit 12137411955d0826e49639bc938be92d1ae23970
Author: Guenther Deschner <[email protected]>
Date:   Thu Sep 5 12:19:52 2024 +0530

    vfs_ceph_new: Add a new struct to hold ceph module config
    
    Consolidate all required configuration related data under a dedicated
    structure named vfs_ceph_config. As of now it includes the location of
    configuration file, file system name, ceph client user id and mount
    related information. This is expected to grow in future with more
    details as and when required. Apart from that small cleanups are also
    done to make code more robust.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Pair-Programmed-With: Anoop C S <[email protected]>
    Signed-off-by: Guenther Deschner <[email protected]>
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    (cherry picked from commit f1d418181d12bd513204cf2b77c37990939e2041)

commit 608d2d55cac84cf8186c3d87f2bec501a7d833d6
Author: Shachar Sharon <[email protected]>
Date:   Mon Aug 12 14:45:53 2024 +0300

    vfs_ceph_new: implement DFS hooks using libcephfs low-level APIs
    
    Refactor the VFS hooks 'create_dfs_pathat_fn' and 'read_dfs_pathat_fn'
    in 'vfs_ceph_new.c' to use libcephfs low-level APIs: instead of using
    path-based operations (as done in legacy 'vfs_ceph.c') use inode based
    operations to create and read msdfs symbolic-links values.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703
    
    Signed-off-by: Shachar Sharon <[email protected]>
    Reviewed-by: Anoop C S <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    
    Autobuild-User(master): Günther Deschner <[email protected]>
    Autobuild-Date(master): Wed Sep 11 19:09:41 UTC 2024 on atb-devel-224
    
    (cherry picked from commit 0cedd74e47ab919528420761a5bd2acb198f084c)

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

Summary of changes:
 docs-xml/manpages/vfs_ceph_new.8.xml |   29 +
 docs-xml/manpages/vfs_gpfs.8.xml     |   29 +
 librpc/ndr/ndr_sec_helper.c          |    5 +-
 python/samba/tests/ndr/sd.py         |  623 ++++++++++++
 selftest/tests.py                    |    1 +
 source3/modules/vfs_ceph_new.c       | 1771 ++++++++++++++++++++++++----------
 source3/modules/vfs_gpfs.c           |   43 +-
 source3/modules/wscript_build        |    2 +-
 source3/rpc_server/mdssvc/mdssvc.c   |   23 +-
 9 files changed, 1981 insertions(+), 545 deletions(-)
 create mode 100644 python/samba/tests/ndr/sd.py


Changeset truncated at 500 lines:

diff --git a/docs-xml/manpages/vfs_ceph_new.8.xml 
b/docs-xml/manpages/vfs_ceph_new.8.xml
index b0640a591a5..eaf5b66cceb 100644
--- a/docs-xml/manpages/vfs_ceph_new.8.xml
+++ b/docs-xml/manpages/vfs_ceph_new.8.xml
@@ -152,6 +152,35 @@
                </listitem>
                </varlistentry>
 
+               <varlistentry>
+               <term>ceph_new:proxy = [ yes | no | auto ]</term>
+               <listitem>
+               <para>
+                       Allows one to indicate use of the libcephfs proxy 
library
+                       for optimized resource utilization, allowing more 
simultaneous
+                       client connections. Prerequisites include the presence 
of
+                       <emphasis>libcephfs_proxy.so.X</emphasis> shared 
library file
+                       under loadable locations for dynamic linker and an 
active(running)
+                       <emphasis>libcephfsd</emphasis> daemon.
+               </para>
+
+               <itemizedlist>
+                       <listitem><para><constant>no</constant> (default) - Do
+                       not use the proxy library but regular connection through
+                       <emphasis>libcephfs.so.X</emphasis>.</para></listitem>
+
+                       <listitem><para><constant>yes</constant> - Always use
+                       the proxy library and fail the client connection request
+                       if prerequisites are unmet.</para></listitem>
+
+                       <listitem><para><constant>auto</constant> - Attempt to
+                       use the proxy library but fall back to the regular 
cephfs
+                       connection if prerequisites are unmet.</para></listitem>
+
+               </itemizedlist>
+
+               </listitem>
+               </varlistentry>
        </variablelist>
 
 </refsect1>
diff --git a/docs-xml/manpages/vfs_gpfs.8.xml b/docs-xml/manpages/vfs_gpfs.8.xml
index 29f2ac453f0..cee12cd3f94 100644
--- a/docs-xml/manpages/vfs_gpfs.8.xml
+++ b/docs-xml/manpages/vfs_gpfs.8.xml
@@ -316,6 +316,35 @@
 
                </varlistentry>
 
+               <varlistentry>
+               <term>gpfs:clamp_invalid_times = [ yes | no ]</term>
+               <listitem>
+               <para>
+               GPFS stores timestamps using 32-bit unsigned integers for the
+               seconds component. When using gpfs:settimes = yes, this module
+               validates times that clients attempt to set are within the
+               supported GPFS range between 0 and UINT32_MAX. If a timestamp is
+               outside of this range, the client request is rejected. To cope
+               with clients setting eg temporary timestamps outside the valid
+               range, this parameter can be used to clamp the client timestamp
+               to the allowed range. Times before Thu Jan 1 12:00:00 AM UTC
+               1970 (the UNIX epock) are then set to Thu Jan 1 12:00:00 AM UTC
+               1970, times after Sun Feb 7 06:28:15 AM UTC 2106 will be set to
+               Sun Feb 7 06:28:15 AM UTC 2106.
+               </para>
+
+               <itemizedlist>
+               <listitem><para>
+               <command>no(default)</command> - Fail request with invalid time.
+               </para></listitem>
+               <listitem><para>
+               <command>yes</command> - clamp invalid times to 0 or UINT32_MAX.
+               </para></listitem>
+               </itemizedlist>
+               </listitem>
+               </varlistentry>
+
+
                <varlistentry>
                <term>gpfs:syncio = [yes|no]</term>
                <listitem>
diff --git a/librpc/ndr/ndr_sec_helper.c b/librpc/ndr/ndr_sec_helper.c
index 1a156b01d40..1ac6e66cfe5 100644
--- a/librpc/ndr/ndr_sec_helper.c
+++ b/librpc/ndr/ndr_sec_helper.c
@@ -104,6 +104,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_ace(struct 
ndr_pull *ndr, ndr_flags
 {
        NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
        if (ndr_flags & NDR_SCALARS) {
+               ssize_t sub_size;
                NDR_CHECK(ndr_pull_align(ndr, 5));
                NDR_CHECK(ndr_pull_security_ace_type(ndr, NDR_SCALARS, 
&r->type));
                NDR_CHECK(ndr_pull_security_ace_flags(ndr, NDR_SCALARS, 
&r->flags));
@@ -111,12 +112,12 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_ace(struct 
ndr_pull *ndr, ndr_flags
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->access_mask));
                NDR_CHECK(ndr_maybe_pull_security_ace_object_ctr(ndr, 
NDR_SCALARS, r));
                NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, &r->trustee));
-               if (!sec_ace_has_extra_blob(r->type)) {
+               sub_size = ndr_subcontext_size_of_ace_coda(r, r->size, 
ndr->flags);
+               if (sub_size == 0 && !sec_ace_has_extra_blob(r->type)) {
                        r->coda.ignored.data = NULL;
                        r->coda.ignored.length = 0;
                } else {
                        struct ndr_pull *_ndr_coda;
-                       ssize_t sub_size = ndr_subcontext_size_of_ace_coda(r, 
r->size, ndr->flags);
                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_coda, 0, 
sub_size));
                        NDR_CHECK(ndr_pull_set_switch_value(_ndr_coda, 
&r->coda, r->type));
                        NDR_CHECK(ndr_pull_security_ace_coda(_ndr_coda, 
NDR_SCALARS|NDR_BUFFERS, &r->coda));
diff --git a/python/samba/tests/ndr/sd.py b/python/samba/tests/ndr/sd.py
new file mode 100644
index 00000000000..b72327421b0
--- /dev/null
+++ b/python/samba/tests/ndr/sd.py
@@ -0,0 +1,623 @@
+# Unix SMB/CIFS implementation.
+# Copyright © Douglas Bagnall <[email protected]> 2025
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import samba
+from samba.tests import TestCase, DynamicTestCase
+from samba.ndr import ndr_pack, ndr_unpack
+from samba.dcerpc import security
+
+
+class BaseSDTestCase(TestCase):
+    maxDiff = 10000
+    _cases = {
+        # subclasses should have a mapping of test names to binhex
+        # strings, as readable by bytes.fromhex().
+        #
+        # note, in Python 3.7+ that means hex pairs separated by any
+        # amount of whitespace, but in Python 3.6 it means any number
+        # of spaces. For example;
+        #
+        # 'ok_in_36': ("01 0203  04      05"
+        #              "   06"),
+        # 'ok_in_37': """
+        #               01 02\t03
+        #                04
+        #               05 06"""
+    }
+
+    @classmethod
+    def setUpDynamicTestCases(cls):
+        for k, v in cls._cases.items():
+            cls.generate_dynamic_test('test_sd', k, v)
+
+    def _test_sd_with_args(self, v):
+        packed = bytes.fromhex(v)
+        try:
+            sd = ndr_unpack(security.descriptor, packed)
+        except (TypeError, ValueError, RuntimeError) as e:
+            self.fail(f"raised {e}")
+        try:
+            repack = ndr_pack(sd)
+        except (TypeError, ValueError) as e:
+            self.fail(f"raised {e}")
+
+        sd2 = ndr_unpack(security.descriptor, repack)
+        self.assertEqual(sd, sd2)
+
+
+@DynamicTestCase
+class SDTestCase(BaseSDTestCase):
+    _cases = {
+        "sd_01": (
+            # this one is manually annotated, but not because it is
+            # especially interesting.
+            "01 "            # version
+            "00 "            #
+            "17 8c "         # control: SR,RM,PS,SI,SD,SP,DP
+            "14 00 00 00 "   # owner offset (20)
+            "30 00 00 00 "   # group offset (48)
+            "4c 00 00 00 "   # sacl offset  (76)
+            "c4 00 00 00 "   # dacl offset  (196)
+            "01 05 "                 # S-1- (5 sub auths)
+            "00 00 00 00 00 05 "     #     5-
+            "15 00 00 00 "           #       21-
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "00 02 00 00 "
+            "01 05 "               # group: S-1-5-21-b-c-d-e
+            "00 00 00 00 00 05 "
+            "15 00 00 00 "
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "00 02 00 00 "
+            # SACL
+            "04 00 "        # sacl v4
+            "78 00 "        # sacl size (92)
+            "02 00 "        # ace count (2)
+            "00 00 "
+            "07 "           # sacl ACE, SYSTEM_AUDIT_OBJECT_ACE_TYPE
+            "5a "           # flags
+            "38 00 "        # ace size
+            "20 00 00 00 "  # mask
+            "03 00 00 00 "  # flags
+            "be 3b 0e f3 f0 9f d1 11 "  # object type GUID
+            "b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 "  # inherited type GUID
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "              # S-1-  (1 subauth)
+            "00 00 00 00 00 01 "  #     1-
+            "00 00 00 00 "        #       0
+            "07 "           # sacl ACE, SYSTEM_AUDIT_OBJECT_ACE_TYPE
+            "5a "           # flags
+            "38 00 "        # size
+            "20 00 00 00 "  # mask
+            "03 00 00 00 "  #flags
+            "bf 3b 0e f3 f0 9f d1 11 " # objct GUID
+            "b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 " # inherited GUID
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "              # S-1-  (1 subauth)
+            "00 00 00 00 00 01 "  #     1-
+            "00 00 00 00 "        #       0
+            # DACL
+            "04 00 "        # dacl v4
+            "10 02 "        # dacl size (528)
+            "0d 00 "        # 13 aces
+            "00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "00 "           # flags
+            "24 00 "        # size
+            "ff 01 0f 00 "  # mask
+            "01 05 "                # S-1- (5 subauth)
+            "00 00 00 00 00 05 "    #     5-
+            "15 00 00 00 "          #       21-
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "00 02 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "00 "
+            "14 00 "
+            "ff 01 0f 00 "
+            "01 01 "                # S-1-5-18
+            "00 00 00 00 00 05 "
+            "12 00 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "00 "
+            "14 00 "
+            "94 00 02 00 "
+            "01 01 "                # S-1-5-11
+            "00 00 00 00 00 05 "
+            "0b 00 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "12 "           # flags
+            "24 00 "
+            "ff 01 0f 00 "
+            "01 05 "              # S-1-5-a-b-c-d-e
+            "00 00 00 00 00 05 "
+            "15 00 00 00 "
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "07 02 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "12 "           # flags
+            "18 00 "
+            "bd 01 0f 00 "
+            "01 02 "              # S-1-5-32-544
+            "00 00 00 00 00 05 "
+            "20 00 00 00 "
+            "20 02 00 00 "
+            "00 "           # ACCESS_ALLOWED_ACE_TYPE
+            "12 "           # flags
+            "18 00 "
+            "04 00 00 00 "
+            "01 02 "             # S-1-5-32-554
+            "00 00 00 00 00 05 "
+            "20 00 00 00 "
+            "2a 02 00 00 "
+            "05 "           # ACCESS_ALLOWED_OBJECT_ACE_TYPE
+            "1a "
+            "38 00 "        # size 56
+            "08 00 00 00 "  # mask
+            "03 00 00 00 "  # flags: object and inherited present
+            "a6 6d 02 9b 3c 0d 5c 46 "  # object GUID
+            "8b ee 51 99 d7 16 5c ba "
+            "86 7a 96 bf e6 0d d0 11 "  # inherited GUID
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "                   # S-1-3-0
+            "00 00 00 00 00 03 "
+            "00 00 00 00 "
+            "05 "           # ACCESS_ALLOWED_OBJECT_ACE_TYPE
+            "12 "
+            "28 00 "        # size 40
+            "30 00 00 00 "  # mask
+            "01 00 00 00 "  # flags: object present
+            "e5 c3 78 3f 9a f7 bd 46 "  # object GUID
+            "a0 b8 9d 18 11 6d dc 79 "
+            "01 01 "                    # S-1-5-10
+            "00 00 00 00 00 05 "
+            "0a 00 00 00 "
+            "05 "
+            "12 "
+            "28 00 "
+            "30 01 00 00 "
+            "01 00 00 00 "   # flags: object present
+            "de 47 e6 91 6f d9 70 4b "  # object GUID
+            "95 57 d6 3f f4 f3 cc d8 "
+            "01 01 "                  # S-1-5-10
+            "00 00 00 00 00 05 "
+            "0a 00 00 00 "
+            "05 "
+            "1a "
+            "38 00 "          # size 56
+            "08 00 00 00 "
+            "03 00 00 00 "    # flags both present
+            "a6 6d 02 9b 3c 0d 5c 46 "
+            "8b ee 51 99 d7 16 5c ba "
+            "86 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "                # S-1-5-10
+            "00 00 00 00 00 05 "
+            "0a 00 00 00 "
+            "05 "
+            "1a "
+            "38 00 "              # size 56
+            "20 00 00 00 "
+            "03 00 00 00 "
+            "93 7b 1b ea 48 5e d5 46 "
+            "bc 6c 4d f4 fd a7 8a 35 "
+            "86 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 "
+            "01 01 "                # S-1-5-10
+            "00 00 00 00 00 05 "
+            "0a 00 00 00 "
+            "05 "
+            "12 "
+            "38 00 "        # size 56
+            "30 00 00 00 "
+            "01 00 00 00 "  # only object GUI present
+            "0f d6 47 5b 90 60 b2 40 "
+            "9f 37 2a 4d e8 8f 30 63 "
+            "01 05 "               # S-1-5-21-b-c-d-e
+            "00 00 00 00 00 05 "
+            "15 00 00 00 "
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "0e 02 00 00 "
+            "05 "
+            "12 "
+            "38 00 "           # size 56
+            "30 00 00 00 "
+            "01 00 00 00 "
+            "0f d6 47 5b 90 60 b2 40 "
+            "9f 37 2a 4d e8 8f 30 63 "
+            "01 05 "               # S-1-5-21-b-c-d-e
+            "00 00 00 00 00 05 "
+            "15 00 00 00 "
+            "51 d7 cf 86 "
+            "f9 1b ef 93 "
+            "c3 53 ea 70 "
+            "0f 02 00 00"
+        ),
+        "sd_02": (
+            "01 00 17 99 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "
+            "00 00 00 00 04 00 60 01 0a 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 00 38 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 05 02 28 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 05 00 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 12 00 00 00 05 00 38 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 05 00 00 00 00 00 05 "
+            "15 00 00 00 51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 "
+            "07 02 00 00"
+        ),
+        "sd_03": (
+            "01 00 17 8c 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "
+            "00 00 00 00 04 00 38 01 0b 00 00 00 00 00 24 00 "
+            "ff 01 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "00 00 14 00 ff 01 0f 00 01 01 00 00 00 00 00 05 "
+            "12 00 00 00 00 00 14 00 94 00 02 00 01 01 00 00 "
+            "00 00 00 05 0b 00 00 00 00 10 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 1a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 12 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 12 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 12 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 12 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 12 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 05 12 28 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 0b 00 00 00"
+        ),
+        "sd_04_object_ace_with_trailing_zeros": (
+            "01 00 04 91 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "14 00 00 00 04 00 d0 01 0a 00 00 00 00 0a 14 00 "
+            "ff 00 0f 00 01 01 00 00 00 00 00 03 00 00 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 02 14 00 ff 00 0f 00 01 01 00 00 "
+            "00 00 00 05 12 00 00 00 00 02 24 00 ff 00 0f 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 00 02 24 00 "
+            "ff 00 0f 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 07 02 00 00 "
+            "00 02 14 00 94 00 02 00 01 01 00 00 00 00 00 05 "
+            "09 00 00 00 "
+            "05 "     # ACCESS_ALLOWED_OBJECT_ACE_TYPE
+            "00 "     # zero flags
+            "48 00 "  # size 72
+            "00 01 00 00 "  # mask
+            "01 00 00 00 "  # flags: object present, no inherit
+            "8f fd ac ed b3 ff d1 11 "  # GUID
+            "b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 "                    # S-1-3-0
+            "00 00 00 00 00 03 "
+            "00 00 00 00 "
+            # next 4 rows are 32 extra bytes
+            "00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 "
+            "05 02 48 00 " # next ACE starts
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 01 00 00 00 00 00 05 "
+            "0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 05 00 48 00 00 01 00 00 01 00 00 00 "
+            "8f fd ac ed b3 ff d1 11 b4 1d 00 a0 c9 68 f9 39 "
+            "01 01 00 00 00 00 00 05 12 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 05 00 58 00 "
+            "00 01 00 00 01 00 00 00 8f fd ac ed b3 ff d1 11 "
+            "b4 1d 00 a0 c9 68 f9 39 01 05 00 00 00 00 00 05 "
+            "15 00 00 00 51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 "
+            "07 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
+            "00 00 00 00"
+        ),
+        "sd_05": (
+            "01 00 17 8c 14 00 00 00 30 00 00 00 4c 00 00 00 "
+            "c4 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 "
+            "51 d7 cf 86 f9 1b ef 93 c3 53 ea 70 00 02 00 00 "
+            "01 05 00 00 00 00 00 05 15 00 00 00 51 d7 cf 86 "
+            "f9 1b ef 93 c3 53 ea 70 00 02 00 00 04 00 78 00 "
+            "02 00 00 00 07 5a 38 00 20 00 00 00 03 00 00 00 "
+            "be 3b 0e f3 f0 9f d1 11 b6 03 00 00 f8 03 67 c1 "
+            "a5 7a 96 bf e6 0d d0 11 a2 85 00 aa 00 30 49 e2 "
+            "01 01 00 00 00 00 00 01 00 00 00 00 07 5a 38 00 "
+            "20 00 00 00 03 00 00 00 bf 3b 0e f3 f0 9f d1 11 "
+            "b6 03 00 00 f8 03 67 c1 a5 7a 96 bf e6 0d d0 11 "
+            "a2 85 00 aa 00 30 49 e2 01 01 00 00 00 00 00 01 "


-- 
Samba Shared Repository


Reply via email to