svn commit: samba r25391 - in branches: SAMBA_3_0_MAINT/source/smbd
SAMBA_3_2/source/smbd SAMBA_3_2_0/source/smbd
jra at samba.org
jra at samba.org
Thu Sep 27 23:28:36 GMT 2007
Author: jra
Date: 2007-09-27 23:28:35 +0000 (Thu, 27 Sep 2007)
New Revision: 25391
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=25391
Log:
Fix bug #4978 : Store DOS Attributes fails when copying folders.
Jeremy.
Modified:
branches/SAMBA_3_0_MAINT/source/smbd/open.c
branches/SAMBA_3_2/source/smbd/open.c
branches/SAMBA_3_2_0/source/smbd/open.c
Changeset:
Modified: branches/SAMBA_3_0_MAINT/source/smbd/open.c
===================================================================
--- branches/SAMBA_3_0_MAINT/source/smbd/open.c 2007-09-27 23:07:35 UTC (rev 25390)
+++ branches/SAMBA_3_0_MAINT/source/smbd/open.c 2007-09-27 23:28:35 UTC (rev 25391)
@@ -1939,6 +1939,7 @@
char *parent_dir;
const char *dirname;
NTSTATUS status;
+ BOOL posix_open = False;
if(!CAN_WRITE(conn)) {
DEBUG(5,("mkdir_internal: failing create on read-only share "
@@ -1957,6 +1958,7 @@
}
if (file_attributes & FILE_FLAG_POSIX_SEMANTICS) {
+ posix_open = True;
mode = (mode_t)(file_attributes & ~FILE_FLAG_POSIX_SEMANTICS);
} else {
mode = unix_mode(conn, aDIR, name, parent_dir);
@@ -1981,6 +1983,14 @@
return NT_STATUS_ACCESS_DENIED;
}
+ if (lp_store_dos_attributes(SNUM(conn))) {
+ if (!posix_open) {
+ file_set_dosmode(conn, name,
+ file_attributes | aDIR, NULL,
+ parent_dir);
+ }
+ }
+
if (lp_inherit_perms(SNUM(conn))) {
inherit_access_acl(conn, parent_dir, name, mode);
}
Modified: branches/SAMBA_3_2/source/smbd/open.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/open.c 2007-09-27 23:07:35 UTC (rev 25390)
+++ branches/SAMBA_3_2/source/smbd/open.c 2007-09-27 23:28:35 UTC (rev 25391)
@@ -1983,6 +1983,7 @@
char *parent_dir;
const char *dirname;
NTSTATUS status;
+ bool posix_open = false;
if(!CAN_WRITE(conn)) {
DEBUG(5,("mkdir_internal: failing create on read-only share "
@@ -2001,6 +2002,7 @@
}
if (file_attributes & FILE_FLAG_POSIX_SEMANTICS) {
+ posix_open = true;
mode = (mode_t)(file_attributes & ~FILE_FLAG_POSIX_SEMANTICS);
} else {
mode = unix_mode(conn, aDIR, name, parent_dir);
@@ -2025,6 +2027,14 @@
return NT_STATUS_ACCESS_DENIED;
}
+ if (lp_store_dos_attributes(SNUM(conn))) {
+ if (!posix_open) {
+ file_set_dosmode(conn, name,
+ file_attributes | aDIR, NULL,
+ parent_dir);
+ }
+ }
+
if (lp_inherit_perms(SNUM(conn))) {
inherit_access_acl(conn, parent_dir, name, mode);
}
Modified: branches/SAMBA_3_2_0/source/smbd/open.c
===================================================================
--- branches/SAMBA_3_2_0/source/smbd/open.c 2007-09-27 23:07:35 UTC (rev 25390)
+++ branches/SAMBA_3_2_0/source/smbd/open.c 2007-09-27 23:28:35 UTC (rev 25391)
@@ -1987,6 +1987,7 @@
char *parent_dir;
const char *dirname;
NTSTATUS status;
+ bool posix_open = false;
if(!CAN_WRITE(conn)) {
DEBUG(5,("mkdir_internal: failing create on read-only share "
@@ -2005,6 +2006,7 @@
}
if (file_attributes & FILE_FLAG_POSIX_SEMANTICS) {
+ posix_open = true;
mode = (mode_t)(file_attributes & ~FILE_FLAG_POSIX_SEMANTICS);
} else {
mode = unix_mode(conn, aDIR, name, parent_dir);
@@ -2029,6 +2031,14 @@
return NT_STATUS_ACCESS_DENIED;
}
+ if (lp_store_dos_attributes(SNUM(conn))) {
+ if (!posix_open) {
+ file_set_dosmode(conn, name,
+ file_attributes | aDIR, NULL,
+ parent_dir);
+ }
+ }
+
if (lp_inherit_perms(SNUM(conn))) {
inherit_access_acl(conn, parent_dir, name, mode);
}
More information about the samba-cvs
mailing list