From c872f810e18320d0b618f23b71cecc019d218cb1 Mon Sep 17 00:00:00 2001
From: "lpsolit%gmail.com" <>
Date: Fri, 14 Oct 2005 08:59:53 +0000
Subject: [PATCH] Bug 312386: checksetup.pl fails to check for existing
 group_group_map entries for new admins - Patch by Joel Peshkin
 <bugreport@peshkin.net> r=karl r=LpSolit a=myk

---
 checksetup.pl | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/checksetup.pl b/checksetup.pl
index f21523e5b..37067267d 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -4416,12 +4416,22 @@ if ($sth->rows == 0) {
 
     # Admins get inherited membership and bless capability for all groups
     foreach my $group ( @groups ) {
-        $dbh->do("INSERT INTO group_group_map
-            (member_id, grantor_id, grant_type)
-            VALUES ($admingroupid, $group, " . GROUP_MEMBERSHIP . ")");
-        $dbh->do("INSERT INTO group_group_map
-            (member_id, grantor_id, grant_type)
-            VALUES ($admingroupid, $group, " . GROUP_BLESS . ")");
+        my $sth_check = $dbh->prepare("SELECT member_id FROM group_group_map
+                                 WHERE member_id = ?
+                                 AND  grantor_id = ?
+                                 AND grant_type = ?");
+        $sth_check->execute($admingroupid, $group, GROUP_MEMBERSHIP);
+        unless ($sth_check->rows) {
+            $dbh->do("INSERT INTO group_group_map
+                      (member_id, grantor_id, grant_type)
+                      VALUES ($admingroupid, $group, " . GROUP_MEMBERSHIP . ")");
+        }
+        $sth_check->execute($admingroupid, $group, GROUP_BLESS);
+        unless ($sth_check->rows) {
+            $dbh->do("INSERT INTO group_group_map
+                      (member_id, grantor_id, grant_type)
+                      VALUES ($admingroupid, $group, " . GROUP_BLESS . ")");
+        }
     }
 
     print "\n$login is now set up as an administrator account.\n";
-- 
2.24.1