* sec_acl.h (getace): Use FILE_*_BITS as permission mask.
* security.cc (get_attribute_from_acl): Ditto. * security.h (FILE_READ_BITS): Define to match also GENERIC bits. (FILE_WRITE_BITS): Ditto. (FILE_EXEC_BITS): Ditto.
This commit is contained in:
		| @@ -1,3 +1,11 @@ | |||||||
|  | 2003-11-26  Corinna Vinschen  <corinna@vinschen.de> | ||||||
|  |  | ||||||
|  | 	* sec_acl.h (getace): Use FILE_*_BITS as permission mask. | ||||||
|  | 	* security.cc (get_attribute_from_acl): Ditto. | ||||||
|  | 	* security.h (FILE_READ_BITS): Define to match also GENERIC bits. | ||||||
|  | 	(FILE_WRITE_BITS): Ditto. | ||||||
|  | 	(FILE_EXEC_BITS): Ditto. | ||||||
|  |  | ||||||
| 2003-11-25  Christopher Faylor  <cgf@redhat.com> | 2003-11-25  Christopher Faylor  <cgf@redhat.com> | ||||||
|  |  | ||||||
| 	* thread.cc: Minor whitespace cleanup.  Remove some obsolete code. | 	* thread.cc: Minor whitespace cleanup.  Remove some obsolete code. | ||||||
|   | |||||||
| @@ -235,19 +235,19 @@ getace (__aclent32_t &acl, int type, int id, DWORD win_ace_mask, | |||||||
|   acl.a_type = type; |   acl.a_type = type; | ||||||
|   acl.a_id = id; |   acl.a_id = id; | ||||||
|  |  | ||||||
|   if ((win_ace_mask & FILE_READ_DATA) && !(acl.a_perm & (S_IROTH | DENY_R))) |   if ((win_ace_mask & FILE_READ_BITS) && !(acl.a_perm & (S_IROTH | DENY_R))) | ||||||
|     if (win_ace_type == ACCESS_ALLOWED_ACE_TYPE) |     if (win_ace_type == ACCESS_ALLOWED_ACE_TYPE) | ||||||
|       acl.a_perm |= S_IROTH; |       acl.a_perm |= S_IROTH; | ||||||
|     else if (win_ace_type == ACCESS_DENIED_ACE_TYPE) |     else if (win_ace_type == ACCESS_DENIED_ACE_TYPE) | ||||||
|       acl.a_perm |= DENY_R; |       acl.a_perm |= DENY_R; | ||||||
|  |  | ||||||
|   if ((win_ace_mask & FILE_WRITE_DATA) && !(acl.a_perm & (S_IWOTH | DENY_W))) |   if ((win_ace_mask & FILE_WRITE_BITS) && !(acl.a_perm & (S_IWOTH | DENY_W))) | ||||||
|     if (win_ace_type == ACCESS_ALLOWED_ACE_TYPE) |     if (win_ace_type == ACCESS_ALLOWED_ACE_TYPE) | ||||||
|       acl.a_perm |= S_IWOTH; |       acl.a_perm |= S_IWOTH; | ||||||
|     else if (win_ace_type == ACCESS_DENIED_ACE_TYPE) |     else if (win_ace_type == ACCESS_DENIED_ACE_TYPE) | ||||||
|       acl.a_perm |= DENY_W; |       acl.a_perm |= DENY_W; | ||||||
|  |  | ||||||
|   if ((win_ace_mask & FILE_EXECUTE) && !(acl.a_perm & (S_IXOTH | DENY_X))) |   if ((win_ace_mask & FILE_EXEC_BITS) && !(acl.a_perm & (S_IXOTH | DENY_X))) | ||||||
|     if (win_ace_type == ACCESS_ALLOWED_ACE_TYPE) |     if (win_ace_type == ACCESS_ALLOWED_ACE_TYPE) | ||||||
|       acl.a_perm |= S_IXOTH; |       acl.a_perm |= S_IXOTH; | ||||||
|     else if (win_ace_type == ACCESS_DENIED_ACE_TYPE) |     else if (win_ace_type == ACCESS_DENIED_ACE_TYPE) | ||||||
|   | |||||||
| @@ -1235,15 +1235,15 @@ get_attribute_from_acl (mode_t *attribute, PACL acl, PSID owner_sid, | |||||||
|       cygpsid ace_sid ((PSID) &ace->SidStart); |       cygpsid ace_sid ((PSID) &ace->SidStart); | ||||||
|       if (ace_sid == well_known_world_sid) |       if (ace_sid == well_known_world_sid) | ||||||
| 	{ | 	{ | ||||||
| 	  if (ace->Mask & FILE_READ_DATA) | 	  if (ace->Mask & FILE_READ_BITS) | ||||||
| 	    *flags |= ((!(*anti & S_IROTH)) ? S_IROTH : 0) | 	    *flags |= ((!(*anti & S_IROTH)) ? S_IROTH : 0) | ||||||
| 		      | ((!(*anti & S_IRGRP)) ? S_IRGRP : 0) | 		      | ((!(*anti & S_IRGRP)) ? S_IRGRP : 0) | ||||||
| 		      | ((!(*anti & S_IRUSR)) ? S_IRUSR : 0); | 		      | ((!(*anti & S_IRUSR)) ? S_IRUSR : 0); | ||||||
| 	  if (ace->Mask & FILE_WRITE_DATA) | 	  if (ace->Mask & FILE_WRITE_BITS) | ||||||
| 	    *flags |= ((!(*anti & S_IWOTH)) ? S_IWOTH : 0) | 	    *flags |= ((!(*anti & S_IWOTH)) ? S_IWOTH : 0) | ||||||
| 		      | ((!(*anti & S_IWGRP)) ? S_IWGRP : 0) | 		      | ((!(*anti & S_IWGRP)) ? S_IWGRP : 0) | ||||||
| 		      | ((!(*anti & S_IWUSR)) ? S_IWUSR : 0); | 		      | ((!(*anti & S_IWUSR)) ? S_IWUSR : 0); | ||||||
| 	  if (ace->Mask & FILE_EXECUTE) | 	  if (ace->Mask & FILE_EXEC_BITS) | ||||||
| 	    *flags |= ((!(*anti & S_IXOTH)) ? S_IXOTH : 0) | 	    *flags |= ((!(*anti & S_IXOTH)) ? S_IXOTH : 0) | ||||||
| 		      | ((!(*anti & S_IXGRP)) ? S_IXGRP : 0) | 		      | ((!(*anti & S_IXGRP)) ? S_IXGRP : 0) | ||||||
| 		      | ((!(*anti & S_IXUSR)) ? S_IXUSR : 0); | 		      | ((!(*anti & S_IXUSR)) ? S_IXUSR : 0); | ||||||
| @@ -1264,22 +1264,22 @@ get_attribute_from_acl (mode_t *attribute, PACL acl, PSID owner_sid, | |||||||
| 	} | 	} | ||||||
|       else if (ace_sid == owner_sid) |       else if (ace_sid == owner_sid) | ||||||
| 	{ | 	{ | ||||||
| 	  if (ace->Mask & FILE_READ_DATA) | 	  if (ace->Mask & FILE_READ_BITS) | ||||||
| 	    *flags |= ((!(*anti & S_IRUSR)) ? S_IRUSR : 0); | 	    *flags |= ((!(*anti & S_IRUSR)) ? S_IRUSR : 0); | ||||||
| 	  if (ace->Mask & FILE_WRITE_DATA) | 	  if (ace->Mask & FILE_WRITE_BITS) | ||||||
| 	    *flags |= ((!(*anti & S_IWUSR)) ? S_IWUSR : 0); | 	    *flags |= ((!(*anti & S_IWUSR)) ? S_IWUSR : 0); | ||||||
| 	  if (ace->Mask & FILE_EXECUTE) | 	  if (ace->Mask & FILE_EXEC_BITS) | ||||||
| 	    *flags |= ((!(*anti & S_IXUSR)) ? S_IXUSR : 0); | 	    *flags |= ((!(*anti & S_IXUSR)) ? S_IXUSR : 0); | ||||||
| 	} | 	} | ||||||
|       else if (ace_sid == group_sid) |       else if (ace_sid == group_sid) | ||||||
| 	{ | 	{ | ||||||
| 	  if (ace->Mask & FILE_READ_DATA) | 	  if (ace->Mask & FILE_READ_BITS) | ||||||
| 	    *flags |= ((!(*anti & S_IRGRP)) ? S_IRGRP : 0) | 	    *flags |= ((!(*anti & S_IRGRP)) ? S_IRGRP : 0) | ||||||
| 		      | ((grp_member && !(*anti & S_IRUSR)) ? S_IRUSR : 0); | 		      | ((grp_member && !(*anti & S_IRUSR)) ? S_IRUSR : 0); | ||||||
| 	  if (ace->Mask & FILE_WRITE_DATA) | 	  if (ace->Mask & FILE_WRITE_BITS) | ||||||
| 	    *flags |= ((!(*anti & S_IWGRP)) ? S_IWGRP : 0) | 	    *flags |= ((!(*anti & S_IWGRP)) ? S_IWGRP : 0) | ||||||
| 		      | ((grp_member && !(*anti & S_IWUSR)) ? S_IWUSR : 0); | 		      | ((grp_member && !(*anti & S_IWUSR)) ? S_IWUSR : 0); | ||||||
| 	  if (ace->Mask & FILE_EXECUTE) | 	  if (ace->Mask & FILE_EXEC_BITS) | ||||||
| 	    *flags |= ((!(*anti & S_IXGRP)) ? S_IXGRP : 0) | 	    *flags |= ((!(*anti & S_IXGRP)) ? S_IXGRP : 0) | ||||||
| 		      | ((grp_member && !(*anti & S_IXUSR)) ? S_IXUSR : 0); | 		      | ((grp_member && !(*anti & S_IXUSR)) ? S_IXUSR : 0); | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -23,6 +23,10 @@ details. */ | |||||||
| #define ACL_DEFAULT_SIZE 3072 | #define ACL_DEFAULT_SIZE 3072 | ||||||
| #define NO_SID ((PSID)NULL) | #define NO_SID ((PSID)NULL) | ||||||
|  |  | ||||||
|  | #define FILE_READ_BITS   (FILE_READ_DATA | GENERIC_READ | GENERIC_ALL) | ||||||
|  | #define FILE_WRITE_BITS  (FILE_WRITE_DATA | GENERIC_WRITE | GENERIC_ALL) | ||||||
|  | #define FILE_EXEC_BITS   (FILE_EXECUTE | GENERIC_EXECUTE | GENERIC_ALL) | ||||||
|  |  | ||||||
| class cygpsid { | class cygpsid { | ||||||
| protected: | protected: | ||||||
|   PSID psid; |   PSID psid; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user