All pastes #394560 Raw Edit

Someone

public c v1 · immutable
·published 2007-03-14 12:43 UTC
rendered paste body
Index: modules/nfs4_acls.c===================================================================--- modules/nfs4_acls.c (revision 21774)+++ modules/nfs4_acls.c (working copy)@@ -604,31 +604,33 @@        if (smbacl4_GetFileOwner(fsp, &sbuf))                return False;-       /* chown logic is a copy/paste from posix_acl.c:set_nt_acl */-       if (!unpack_nt_owners(SNUM(fsp->conn), &newUID, &newGID, security_info_sent, psd))-       {-               DEBUG(8, ("unpack_nt_owners failed"));-               return False;-       }-       if (((newUID != (uid_t)-1) && (sbuf.st_uid != newUID)) ||-               ((newGID != (gid_t)-1) && (sbuf.st_gid != newGID))) {-               need_chown = True;-       }-       if (need_chown) {-               if ((newUID == (uid_t)-1 || newUID == current_user.ut.uid)) {-                       if(try_chown(fsp->conn, fsp->fsp_name, newUID, newGID)) {-                               DEBUG(3,("chown %s, %u, %u failed. Error = %s.\n",-                                       fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID, strerror(errno) ));-                               return False;+       if (params.do_chown) {+               /* chown logic is a copy/paste from posix_acl.c:set_nt_acl */+               if (!unpack_nt_owners(SNUM(fsp->conn), &newUID, &newGID, security_info_sent, psd))+               {+                       DEBUG(8, ("unpack_nt_owners failed"));+                       return False;+               }+               if (((newUID != (uid_t)-1) && (sbuf.st_uid != newUID)) ||+                       ((newGID != (gid_t)-1) && (sbuf.st_gid != newGID))) {+                       need_chown = True;+               }+               if (need_chown) {+                       if ((newUID == (uid_t)-1 || newUID == current_user.ut.uid)) {+                               if(try_chown(fsp->conn, fsp->fsp_name, newUID, newGID)) {+                                       DEBUG(3,("chown %s, %u, %u failed. Error = %s.\n",+                                               fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID, strerror(errno) ));+                                       return False;+                               }+                               DEBUG(10,("chown %s, %u, %u succeeded.\n",+                                       fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID));+                               if (smbacl4_GetFileOwner(fsp, &sbuf))+                                       return False;+                               need_chown = False;+                       } else { /* chown is needed, but _after_ changing acl */+                               sbuf.st_uid = newUID; /* OWNER@ in case of e_special */+                               sbuf.st_gid = newGID; /* GROUP@ in case of e_special */                        }-                       DEBUG(10,("chown %s, %u, %u succeeded.\n",-                               fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID));-                       if (smbacl4_GetFileOwner(fsp, &sbuf))-                               return False;-                       need_chown = False;-               } else { /* chown is needed, but _after_ changing acl */-                       sbuf.st_uid = newUID; /* OWNER@ in case of e_special */-                       sbuf.st_gid = newGID; /* GROUP@ in case of e_special */                }        }