Fix SamrRemoveMemberFromGroup.

svn path=/trunk/; revision=58187
This commit is contained in:
Eric Kohl 2013-01-17 22:05:37 +00:00
parent b8577036db
commit 8c365a1421
2 changed files with 29 additions and 31 deletions

View file

@ -90,18 +90,15 @@ SampRemoveMemberFromGroup(IN PSAM_DB_OBJECT GroupObject,
ULONG i;
NTSTATUS Status;
Status = SampGetObjectAttribute(GroupObject,
L"Members",
NULL,
NULL,
&Length);
SampGetObjectAttribute(GroupObject,
L"Members",
NULL,
NULL,
&Length);
if (Status == STATUS_OBJECT_NAME_NOT_FOUND)
if (Length == 0)
return STATUS_MEMBER_NOT_IN_GROUP;
if (!NT_SUCCESS(Status))
return Status;
MembersBuffer = midl_user_allocate(Length);
if (MembersBuffer == NULL)
{
@ -126,12 +123,15 @@ SampRemoveMemberFromGroup(IN PSAM_DB_OBJECT GroupObject,
{
Length -= sizeof(ULONG);
Status = STATUS_SUCCESS;
break;
}
if (Status == STATUS_SUCCESS && i < MembersCount - 1)
{
MembersBuffer[i] = MembersBuffer[i + 1];
if (MembersCount - i - 1 > 0)
{
CopyMemory(&MembersBuffer[i],
&MembersBuffer[i + 1],
(MembersCount - i - 1) * sizeof(ULONG));
}
break;
}
}

View file

@ -117,23 +117,20 @@ SampRemoveGroupMembershipFromUser(IN PSAM_DB_OBJECT UserObject,
ULONG GroupsCount = 0;
ULONG Length = 0;
ULONG i;
NTSTATUS Status;
NTSTATUS Status = STATUS_SUCCESS;
TRACE("(%p %lu)\n",
UserObject, GroupId);
Status = SampGetObjectAttribute(UserObject,
L"Groups",
NULL,
NULL,
&Length);
SampGetObjectAttribute(UserObject,
L"Groups",
NULL,
NULL,
&Length);
if (Status == STATUS_OBJECT_NAME_NOT_FOUND)
if (Length == 0)
return STATUS_MEMBER_NOT_IN_GROUP;
if (!NT_SUCCESS(Status))
return Status;
GroupsBuffer = midl_user_allocate(Length);
if (GroupsBuffer == NULL)
{
@ -158,14 +155,15 @@ SampRemoveGroupMembershipFromUser(IN PSAM_DB_OBJECT UserObject,
{
Length -= sizeof(GROUP_MEMBERSHIP);
Status = STATUS_SUCCESS;
break;
}
if (Status == STATUS_SUCCESS && i < GroupsCount - 1)
{
CopyMemory(&GroupsBuffer[i],
&GroupsBuffer[i + 1],
sizeof(GROUP_MEMBERSHIP));
if (GroupsCount - i - 1 > 0)
{
CopyMemory(&GroupsBuffer[i],
&GroupsBuffer[i + 1],
(GroupsCount - i - 1) * sizeof(GROUP_MEMBERSHIP));
}
break;
}
}