diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index 7cd59bff8..6917ab58d 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,3 +1,8 @@
+2008-08-18  Corinna Vinschen  <corinna@vinschen.de>
+
+	* mkgroup.c (enum_local_groups): Use NetLocalGroupGetInfo to find out
+	if a group exists, rather than just allocating a buffer and going ahead.
+
 2008-08-18  Corinna Vinschen  <corinna@vinschen.de>
 
 	* mkgroup.c (enum_local_groups): Call print_win_error with GetLastError
diff --git a/winsup/utils/mkgroup.c b/winsup/utils/mkgroup.c
index 6854f09d1..700363ee9 100644
--- a/winsup/utils/mkgroup.c
+++ b/winsup/utils/mkgroup.c
@@ -348,10 +348,9 @@ enum_local_groups (BOOL domain, domlist_t *dom_or_machine, const char *sep,
       if (disp_groupname != NULL)
 	{
 	  mbstowcs (gname, disp_groupname, GNLEN + 1);
-	  rc = NetApiBufferAllocate (sizeof (LOCALGROUP_INFO_0),
-				     (void *) &buffer);
-	  buffer[0].lgrpi0_name = gname;
-	  entriesread = 1;
+	  rc = NetLocalGroupGetInfo (servername, gname, 0, (void *) &buffer);
+	  if (rc == ERROR_SUCCESS)
+	    entriesread = 1;
 	}
       else
 	rc = NetLocalGroupEnum (servername, 0, (void *) &buffer,