[ros-kernel] getting ntoskrnl compile with gcc 3.4.1
Thomas Weidenmueller
thomas at reactsoft.com
Sun Jul 18 17:31:38 CEST 2004
ntoskrnl fails to compile using mingw's gcc 3.4.1 due to multiple
definitions of some security functions. lib\rtl seems to have them
defined already, so removing those fixes building it. I attached the
patch, but I'm not sure if the lib\rtl code is up-to-date, so I'd ask
someone to approve this patch and try if it also compiles with older
versions of gcc.
Regards
Thomas
-------------- next part --------------
Index: ntoskrnl/se/sd.c
===================================================================
RCS file: /CVS/ReactOS/reactos/ntoskrnl/se/sd.c,v
retrieving revision 1.14
diff -u -r1.14 sd.c
--- ntoskrnl/se/sd.c 20 May 2004 12:42:11 -0000 1.14
+++ ntoskrnl/se/sd.c 18 Jul 2004 14:28:20 -0000
@@ -113,676 +113,6 @@
/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- ULONG Revision)
-{
- if (Revision != SECURITY_DESCRIPTOR_REVISION)
- return(STATUS_UNSUCCESSFUL);
-
- SecurityDescriptor->Revision = SECURITY_DESCRIPTOR_REVISION;
- SecurityDescriptor->Sbz1 = 0;
- SecurityDescriptor->Control = 0;
- SecurityDescriptor->Owner = NULL;
- SecurityDescriptor->Group = NULL;
- SecurityDescriptor->Sacl = NULL;
- SecurityDescriptor->Dacl = NULL;
-
- return(STATUS_SUCCESS);
-}
-
-
-/*
- * @implemented
- */
-ULONG STDCALL
-RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor)
-{
- PSID Owner;
- PSID Group;
- ULONG Length;
- PACL Dacl;
- PACL Sacl;
-
- Length = sizeof(SECURITY_DESCRIPTOR);
-
- if (SecurityDescriptor->Owner != NULL)
- {
- Owner = SecurityDescriptor->Owner;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- Owner = (PSID)((ULONG)Owner +
- (ULONG)SecurityDescriptor);
- }
- Length = Length + ((sizeof(SID) + (Owner->SubAuthorityCount - 1) *
- sizeof(ULONG) + 3) & 0xfc);
- }
-
- if (SecurityDescriptor->Group != NULL)
- {
- Group = SecurityDescriptor->Group;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- Group = (PSID)((ULONG)Group + (ULONG)SecurityDescriptor);
- }
- Length = Length + ((sizeof(SID) + (Group->SubAuthorityCount - 1) *
- sizeof(ULONG) + 3) & 0xfc);
- }
-
- if (SecurityDescriptor->Control & SE_DACL_PRESENT &&
- SecurityDescriptor->Dacl != NULL)
- {
- Dacl = SecurityDescriptor->Dacl;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- Dacl = (PACL)((ULONG)Dacl + (char*)SecurityDescriptor);
- }
- Length = Length + ((Dacl->AclSize + 3) & 0xfc);
- }
-
- if (SecurityDescriptor->Control & SE_SACL_PRESENT &&
- SecurityDescriptor->Sacl != NULL)
- {
- Sacl = SecurityDescriptor->Sacl;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- Sacl = (PACL)((ULONG)Sacl + (char*)SecurityDescriptor);
- }
- Length = Length + ((Sacl->AclSize + 3) & 0xfc);
- }
-
- return(Length);
-}
-
-
-/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- PBOOLEAN DaclPresent,
- PACL* Dacl,
- PBOOLEAN DaclDefaulted)
-{
- if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- if (!(SecurityDescriptor->Control & SE_DACL_PRESENT))
- {
- *DaclPresent = FALSE;
- return(STATUS_SUCCESS);
- }
- *DaclPresent = TRUE;
-
- if (SecurityDescriptor->Dacl == NULL)
- {
- *Dacl = NULL;
- }
- else
- {
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- *Dacl = (PACL)((ULONG)SecurityDescriptor->Dacl +
- (char*)SecurityDescriptor);
- }
- else
- {
- *Dacl = SecurityDescriptor->Dacl;
- }
- }
-
- if (SecurityDescriptor->Control & SE_DACL_DEFAULTED)
- {
- *DaclDefaulted = TRUE;
- }
- else
- {
- *DaclDefaulted = FALSE;
- }
-
- return(STATUS_SUCCESS);
-}
-
-
-/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- BOOLEAN DaclPresent,
- PACL Dacl,
- BOOLEAN DaclDefaulted)
-{
- if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- if (!DaclPresent)
- {
- SecurityDescriptor->Control = SecurityDescriptor->Control & ~(SE_DACL_PRESENT);
- return(STATUS_SUCCESS);
- }
-
- SecurityDescriptor->Control = SecurityDescriptor->Control | SE_DACL_PRESENT;
- SecurityDescriptor->Dacl = Dacl;
- SecurityDescriptor->Control = SecurityDescriptor->Control & ~(SE_DACL_DEFAULTED);
-
- if (DaclDefaulted)
- {
- SecurityDescriptor->Control = SecurityDescriptor->Control | SE_DACL_DEFAULTED;
- }
-
- return(STATUS_SUCCESS);
-}
-
-
-/*
- * @implemented
- */
-BOOLEAN STDCALL
-RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor)
-{
- PSID Owner;
- PSID Group;
- PACL Sacl;
- PACL Dacl;
-
- if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION)
- {
- return(FALSE);
- }
-
- Owner = SecurityDescriptor->Owner;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- Owner = (PSID)((ULONG)Owner + (ULONG)SecurityDescriptor);
- }
-
- if (!RtlValidSid(Owner))
- {
- return(FALSE);
- }
-
- Group = SecurityDescriptor->Group;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- Group = (PSID)((ULONG)Group + (ULONG)SecurityDescriptor);
- }
-
- if (!RtlValidSid(Group))
- {
- return(FALSE);
- }
-
- if (SecurityDescriptor->Control & SE_DACL_PRESENT &&
- SecurityDescriptor->Dacl != NULL)
- {
- Dacl = SecurityDescriptor->Dacl;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- Dacl = (PACL)((ULONG)Dacl + (ULONG)SecurityDescriptor);
- }
-
- if (!RtlValidAcl(Dacl))
- {
- return(FALSE);
- }
- }
-
- if (SecurityDescriptor->Control & SE_SACL_PRESENT &&
- SecurityDescriptor->Sacl != NULL)
- {
- Sacl = SecurityDescriptor->Sacl;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- Sacl = (PACL)((ULONG)Sacl + (ULONG)SecurityDescriptor);
- }
-
- if (!RtlValidAcl(Sacl))
- {
- return(FALSE);
- }
- }
-
- return(TRUE);
-}
-
-
-/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- PSID Owner,
- BOOLEAN OwnerDefaulted)
-{
- if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- SecurityDescriptor->Owner = Owner;
- SecurityDescriptor->Control = SecurityDescriptor->Control & ~(SE_OWNER_DEFAULTED);
-
- if (OwnerDefaulted)
- {
- SecurityDescriptor->Control = SecurityDescriptor->Control | SE_OWNER_DEFAULTED;
- }
-
- return(STATUS_SUCCESS);
-}
-
-
-/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- PSID* Owner,
- PBOOLEAN OwnerDefaulted)
-{
- if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- if (SecurityDescriptor->Owner != NULL)
- {
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- *Owner = (PSID)((ULONG)SecurityDescriptor->Owner +
- (char*)SecurityDescriptor);
- }
- else
- {
- *Owner = SecurityDescriptor->Owner;
- }
- }
- else
- {
- *Owner = NULL;
- }
- if (SecurityDescriptor->Control & SE_OWNER_DEFAULTED)
- {
- *OwnerDefaulted = 1;
- }
- else
- {
- *OwnerDefaulted = 0;
- }
- return(STATUS_SUCCESS);
-}
-
-
-/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- PSID Group,
- BOOLEAN GroupDefaulted)
-{
- if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- SecurityDescriptor->Group = Group;
- SecurityDescriptor->Control = SecurityDescriptor->Control & ~(SE_GROUP_DEFAULTED);
-
- if (GroupDefaulted)
- {
- SecurityDescriptor->Control = SecurityDescriptor->Control | SE_GROUP_DEFAULTED;
- }
-
- return(STATUS_SUCCESS);
-}
-
-
-/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- PSID* Group,
- PBOOLEAN GroupDefaulted)
-{
- if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- if (SecurityDescriptor->Group != NULL)
- {
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- *Group = (PSID)((ULONG)SecurityDescriptor->Group +
- (char*)SecurityDescriptor);
- }
- else
- {
- *Group = SecurityDescriptor->Group;
- }
- }
- else
- {
- *Group = NULL;
- }
-
- if (SecurityDescriptor->Control & SE_GROUP_DEFAULTED)
- {
- *GroupDefaulted = TRUE;
- }
- else
- {
- *GroupDefaulted = FALSE;
- }
-
- return(STATUS_SUCCESS);
-}
-
-
-/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- PBOOLEAN SaclPresent,
- PACL *Sacl,
- PBOOLEAN SaclDefaulted)
-{
- if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- if (!(SecurityDescriptor->Control & SE_SACL_PRESENT))
- {
- *SaclPresent = FALSE;
- return(STATUS_SUCCESS);
- }
- *SaclPresent = TRUE;
-
- if (SecurityDescriptor->Sacl == NULL)
- {
- *Sacl = NULL;
- }
- else
- {
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- *Sacl = (PACL)((ULONG)SecurityDescriptor->Sacl +
- (char*)SecurityDescriptor);
- }
- else
- {
- *Sacl = SecurityDescriptor->Sacl;
- }
- }
-
- if (SecurityDescriptor->Control & SE_SACL_DEFAULTED)
- {
- *SaclDefaulted = TRUE;
- }
- else
- {
- *SaclDefaulted = FALSE;
- }
-
- return(STATUS_SUCCESS);
-}
-
-
-/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- BOOLEAN SaclPresent,
- PACL Sacl,
- BOOLEAN SaclDefaulted)
-{
- if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION)
- {
- return(STATUS_UNSUCCESSFUL);
- }
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- return(STATUS_UNSUCCESSFUL);
- }
-
- if (!SaclPresent)
- {
- SecurityDescriptor->Control = SecurityDescriptor->Control & ~(SE_SACL_PRESENT);
- return(STATUS_SUCCESS);
- }
-
- SecurityDescriptor->Control = SecurityDescriptor->Control | SE_SACL_PRESENT;
- SecurityDescriptor->Sacl = Sacl;
- SecurityDescriptor->Control = SecurityDescriptor->Control & ~(SE_SACL_DEFAULTED);
-
- if (SaclDefaulted)
- {
- SecurityDescriptor->Control = SecurityDescriptor->Control | SE_SACL_DEFAULTED;
- }
-
- return(STATUS_SUCCESS);
-}
-
-
-static VOID
-RtlpQuerySecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor,
- PSID* Owner,
- PULONG OwnerLength,
- PSID* Group,
- PULONG GroupLength,
- PACL* Dacl,
- PULONG DaclLength,
- PACL* Sacl,
- PULONG SaclLength)
-{
- if (SecurityDescriptor->Owner != NULL)
- {
- *Owner = SecurityDescriptor->Owner;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- *Owner = (PSID)((ULONG)*Owner + (ULONG)SecurityDescriptor);
- }
- }
- else
- {
- *Owner = NULL;
- }
-
- if (*Owner != NULL)
- {
- *OwnerLength = (RtlLengthSid(*Owner) + 3) & ~3;
- }
- else
- {
- *OwnerLength = 0;
- }
-
- if ((SecurityDescriptor->Control & SE_DACL_PRESENT) &&
- SecurityDescriptor->Dacl != NULL)
- {
- *Dacl = SecurityDescriptor->Dacl;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- *Dacl = (PACL)((ULONG)*Dacl + (ULONG)SecurityDescriptor);
- }
- }
- else
- {
- *Dacl = NULL;
- }
-
- if (*Dacl != NULL)
- {
- *DaclLength = ((*Dacl)->AclSize + 3) & ~3;
- }
- else
- {
- *DaclLength = 0;
- }
-
- if (SecurityDescriptor->Group != NULL)
- {
- *Group = SecurityDescriptor->Group;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- *Group = (PSID)((ULONG)*Group + (ULONG)SecurityDescriptor);
- }
- }
- else
- {
- *Group = NULL;
- }
-
- if (*Group != NULL)
- {
- *GroupLength = (RtlLengthSid(*Group) + 3) & ~3;
- }
- else
- {
- *GroupLength = 0;
- }
-
- if ((SecurityDescriptor->Control & SE_SACL_PRESENT) &&
- SecurityDescriptor->Sacl != NULL)
- {
- *Sacl = SecurityDescriptor->Sacl;
- if (SecurityDescriptor->Control & SE_SELF_RELATIVE)
- {
- *Sacl = (PACL)((ULONG)*Sacl + (ULONG)SecurityDescriptor);
- }
- }
- else
- {
- *Sacl = NULL;
- }
-
- if (*Sacl != NULL)
- {
- *SaclLength = ((*Sacl)->AclSize + 3) & ~3;
- }
- else
- {
- *SaclLength = 0;
- }
-}
-
-
-/*
- * @implemented
- */
-NTSTATUS STDCALL
-RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR AbsSD,
- PSECURITY_DESCRIPTOR RelSD,
- PULONG BufferLength)
-{
- PSID Owner;
- PSID Group;
- PACL Sacl;
- PACL Dacl;
- ULONG OwnerLength;
- ULONG GroupLength;
- ULONG SaclLength;
- ULONG DaclLength;
- ULONG TotalLength;
- ULONG Current;
-
- if (AbsSD->Control & SE_SELF_RELATIVE)
- {
- return(STATUS_BAD_DESCRIPTOR_FORMAT);
- }
-
- RtlpQuerySecurityDescriptor(AbsSD,
- &Owner,
- &OwnerLength,
- &Group,
- &GroupLength,
- &Dacl,
- &DaclLength,
- &Sacl,
- &SaclLength);
-
- TotalLength = OwnerLength + GroupLength + SaclLength +
- DaclLength + sizeof(SECURITY_DESCRIPTOR);
- if (*BufferLength < TotalLength)
- {
- return(STATUS_BUFFER_TOO_SMALL);
- }
-
- RtlZeroMemory(RelSD,
- TotalLength);
- memmove(RelSD,
- AbsSD,
- sizeof(SECURITY_DESCRIPTOR));
- Current = (ULONG)RelSD + sizeof(SECURITY_DESCRIPTOR);
-
- if (SaclLength != 0)
- {
- memmove((PVOID)Current,
- Sacl,
- SaclLength);
- RelSD->Sacl = (PACL)((ULONG)Current - (ULONG)RelSD);
- Current += SaclLength;
- }
-
- if (DaclLength != 0)
- {
- memmove((PVOID)Current,
- Dacl,
- DaclLength);
- RelSD->Dacl = (PACL)((ULONG)Current - (ULONG)RelSD);
- Current += DaclLength;
- }
-
- if (OwnerLength != 0)
- {
- memmove((PVOID)Current,
- Owner,
- OwnerLength);
- RelSD->Owner = (PSID)((ULONG)Current - (ULONG)RelSD);
- Current += OwnerLength;
- }
-
- if (GroupLength != 0)
- {
- memmove((PVOID)Current,
- Group,
- GroupLength);
- RelSD->Group = (PSID)((ULONG)Current - (ULONG)RelSD);
- }
-
- RelSD->Control |= SE_SELF_RELATIVE;
-
- return(STATUS_SUCCESS);
-}
-
-
-/*
* @unimplemented
*/
NTSTATUS STDCALL
More information about the Ros-kernel
mailing list