diff --git a/reactos/dll/win32/netapi32/local_group.c b/reactos/dll/win32/netapi32/local_group.c index 026beb6de90..6bdc76a5d54 100644 --- a/reactos/dll/win32/netapi32/local_group.c +++ b/reactos/dll/win32/netapi32/local_group.c @@ -468,7 +468,12 @@ NetLocalGroupAdd( done: if (AliasHandle != NULL) - SamCloseHandle(AliasHandle); + { + if (ApiStatus != NERR_Success) + SamDeleteAlias(AliasHandle); + else + SamCloseHandle(AliasHandle); + } if (DomainHandle != NULL) SamCloseHandle(DomainHandle); diff --git a/reactos/dll/win32/netapi32/user.c b/reactos/dll/win32/netapi32/user.c index bcfd21f8a57..ae99d2e201b 100644 --- a/reactos/dll/win32/netapi32/user.c +++ b/reactos/dll/win32/netapi32/user.c @@ -2692,7 +2692,10 @@ NetUserGetGroups(LPCWSTR servername, if (!NT_SUCCESS(Status)) { ERR("SamLookupNamesInDomain failed (Status %08lx)\n", Status); - ApiStatus = NetpNtStatusToApiStatus(Status); + if (Status == STATUS_NONE_MAPPED) + ApiStatus = NERR_UserNotFound; + else + ApiStatus = NetpNtStatusToApiStatus(Status); goto done; } @@ -2846,7 +2849,10 @@ NetUserGetInfo(LPCWSTR servername, if (!NT_SUCCESS(Status)) { ERR("SamOpenDomain failed (Status %08lx)\n", Status); - ApiStatus = NetpNtStatusToApiStatus(Status); + if (Status == STATUS_NONE_MAPPED) + ApiStatus = NERR_UserNotFound; + else + ApiStatus = NetpNtStatusToApiStatus(Status); goto done; } @@ -3029,7 +3035,10 @@ NetUserGetLocalGroups(LPCWSTR servername, if (!NT_SUCCESS(Status)) { ERR("SamLookupNamesInDomain failed (Status %08lx)\n", Status); - ApiStatus = NetpNtStatusToApiStatus(Status); + if (Status == STATUS_NONE_MAPPED) + ApiStatus = NERR_UserNotFound; + else + ApiStatus = NetpNtStatusToApiStatus(Status); goto done; }