diff -Naur a/source3/auth/server_info.c b/source3/auth/server_info.c --- a/source3/auth/server_info.c 2012-01-29 20:40:43.000000000 +0100 +++ b/source3/auth/server_info.c 2012-03-13 09:15:30.000000000 +0100 @@ -260,6 +260,7 @@ NTSTATUS status; uint32_t rid; bool ok; + bool primary_gid_added=false; domain_sid = info3->base.domain_sid; groups = &info3->base.groups; @@ -276,7 +277,10 @@ /* if it is the primary gid, skip it, we * obviously already have it */ - if (info3->base.primary_gid == rid) continue; + if (info3->base.primary_gid == rid) { + if(primary_gid_added) continue; + primary_gid_added=true; + } /* store domain group rid */ groups->rids[groups->count].rid = rid;