Mark module experimental, fix crash bugs.
authorJeremy Allison <jra@samba.org>
Wed, 17 Sep 2008 19:34:09 +0000 (12:34 -0700)
committerJeremy Allison <jra@samba.org>
Wed, 17 Sep 2008 19:34:09 +0000 (12:34 -0700)
Jeremy.

source3/modules/vfs_acl_xattr.c

index 31ffe340648f37d71c8a120bc5e412230fd0d0b5..ff0c2cbc89c6c5a13fe554a5a6b20c23b4e8e798 100644 (file)
@@ -18,6 +18,8 @@
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: This is an experimental module, not yet finished. JRA. */
+
 #include "includes.h"
 #include "librpc/gen_ndr/xattr.h"
 #include "librpc/gen_ndr/ndr_xattr.h"
@@ -77,8 +79,8 @@ static NTSTATUS parse_acl_blob(const DATA_BLOB *pblob,
        return (*ppdesc != NULL) ? NT_STATUS_OK : NT_STATUS_NO_MEMORY;
 }
 
-static NTSTATUS get_acl_blob(vfs_handle_struct *handle,
-                       TALLOC_CTX *ctx,
+static NTSTATUS get_acl_blob(TALLOC_CTX *ctx,
+                       vfs_handle_struct *handle,
                        files_struct *fsp,
                        const char *name,
                        DATA_BLOB *pblob)
@@ -223,10 +225,14 @@ static NTSTATUS get_nt_acl_xattr(vfs_handle_struct *handle,
 static NTSTATUS create_acl_blob(SEC_DESC *psd, DATA_BLOB *pblob)
 {
        struct xattr_NTACL xacl;
+       struct security_descriptor_timestamp sd_ts;
        enum ndr_err_code ndr_err;
        TALLOC_CTX *ctx = talloc_tos();
        struct timespec curr = timespec_current();
 
+       ZERO_STRUCT(xacl);
+       ZERO_STRUCT(sd_ts);
+
        /* Horrid hack as setting an xattr changes the ctime
         * on Linux. This gives a race of 1 second during
         * which we would not see a POSIX ACL set.
@@ -234,6 +240,7 @@ static NTSTATUS create_acl_blob(SEC_DESC *psd, DATA_BLOB *pblob)
        curr.tv_sec += 1;
 
        xacl.version = 2;
+       xacl.info.sd_ts = &sd_ts;
        xacl.info.sd_ts->sd = psd;
        unix_timespec_to_nt_time(&xacl.info.sd_ts->last_changed, curr);