s3: Attempt to fix hpuxacl module
authorTim Prouty <tprouty@samba.org>
Wed, 29 Jul 2009 17:12:11 +0000 (10:12 -0700)
committerTim Prouty <tprouty@samba.org>
Wed, 29 Jul 2009 17:12:23 +0000 (10:12 -0700)
source3/modules/vfs_hpuxacl.c
source3/modules/vfs_hpuxacl.h

index 36386365eb4905633ddba1ea399740acfd1e97d2..abc80dcd9c2cddf728f03c0b6250300e42526beb 100644 (file)
@@ -208,17 +208,23 @@ SMB_ACL_T hpuxacl_sys_acl_get_fd(vfs_handle_struct *handle,
 
 
 int hpuxacl_sys_acl_set_file(vfs_handle_struct *handle,
-                            struct smb_filename *smb_fname,
+                            const char *name,
                             SMB_ACL_TYPE_T type,
                             SMB_ACL_T theacl)
 {
        int ret = -1;
        HPUX_ACL_T hpux_acl = NULL;
        int count;
+       struct smb_filename *smb_fname = NULL;
        
        DEBUG(10, ("hpuxacl_sys_acl_set_file called for file '%s'\n",
-                  smb_fname_str_dbg(smb_fname)));
+                  name));
 
+       status = create_synthetic_smb_fname(talloc_tos(), name, NULL, NULL,
+                                           &smb_fname);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto done;
+       }
 
        if(hpux_acl_call_present() == False) {
                /* Looks like we don't have the acl() system call on HPUX. 
@@ -299,6 +305,7 @@ int hpuxacl_sys_acl_set_file(vfs_handle_struct *handle,
  done:
        DEBUG(10, ("hpuxacl_sys_acl_set_file %s.\n",
                   ((ret != 0) ? "failed" : "succeeded")));
+       TALLOC_FREE(smb_fname);
        SAFE_FREE(hpux_acl);
        return ret;
 }
@@ -327,8 +334,9 @@ int hpuxacl_sys_acl_set_fd(vfs_handle_struct *handle,
        DEBUG(10, ("redirecting call of hpuxacl_sys_acl_set_fd to "
                "hpuxacl_sys_acl_set_file (no facl syscall on HPUX)\n"));
 
-        return hpuxacl_sys_acl_set_file(handle, file_struct_p->fsp_name,
-                       SMB_ACL_TYPE_ACCESS, theacl);
+        return hpuxacl_sys_acl_set_file(handle,
+                                       file_struct_p->fsp_name->base_name,
+                                       SMB_ACL_TYPE_ACCESS, theacl);
 }
 
 
index 9baed5790a806551404506187ecd4a25a5b1a16f..07b32d628cad3641f82e4dae8c857171100ca074 100644 (file)
@@ -41,7 +41,7 @@ SMB_ACL_T hpuxacl_sys_acl_get_fd(vfs_handle_struct *handle,
                                 files_struct *fsp);
 
 int hpuxacl_sys_acl_set_file(vfs_handle_struct *handle,
-                            struct smb_filename *smb_fname,
+                            const char *name,
                             SMB_ACL_TYPE_T type,
                             SMB_ACL_T theacl);