aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2006-07-25 07:08:10 +0000
committerlpsolit%gmail.com <>2006-07-25 07:08:10 +0000
commit43dd0fc1e7a1c6f601e30243b363b3e2f358f105 (patch)
tree11a89f074f65495f2dcfb7c3c43264d2b185e6f9
parent2904ac3261ff9bb59e29b74d55d4ada294986ffe (diff)
downloadbugs-43dd0fc1e7a1c6f601e30243b363b3e2f358f105.tar
bugs-43dd0fc1e7a1c6f601e30243b363b3e2f358f105.tar.gz
bugs-43dd0fc1e7a1c6f601e30243b363b3e2f358f105.tar.bz2
bugs-43dd0fc1e7a1c6f601e30243b363b3e2f358f105.tar.xz
bugs-43dd0fc1e7a1c6f601e30243b363b3e2f358f105.zip
Bug 345359: Prevent Flag::clear from deleting a deleted flag when checking the inclusion and exclusion lists - Patch by Frédéric Buclin <LpSolit@gmail.com> a=myk
-rw-r--r--Bugzilla/Flag.pm4
-rwxr-xr-xeditflagtypes.cgi5
2 files changed, 5 insertions, 4 deletions
diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm
index 6fb5e19d1..25541d06b 100644
--- a/Bugzilla/Flag.pm
+++ b/Bugzilla/Flag.pm
@@ -448,7 +448,7 @@ sub process {
# In case the bug's product/component has changed, clear flags that are
# no longer valid.
my $flag_ids = $dbh->selectcol_arrayref(
- "SELECT flags.id
+ "SELECT DISTINCT flags.id
FROM flags
INNER JOIN bugs
ON flags.bug_id = bugs.bug_id
@@ -463,7 +463,7 @@ sub process {
foreach my $flag_id (@$flag_ids) { clear($flag_id, $bug, $attachment) }
$flag_ids = $dbh->selectcol_arrayref(
- "SELECT flags.id
+ "SELECT DISTINCT flags.id
FROM flags, bugs, flagexclusions e
WHERE bugs.bug_id = ?
AND flags.bug_id = bugs.bug_id
diff --git a/editflagtypes.cgi b/editflagtypes.cgi
index 79bf0dd72..1ca6bd94d 100755
--- a/editflagtypes.cgi
+++ b/editflagtypes.cgi
@@ -388,7 +388,8 @@ sub update {
# Clear existing flags for bugs/attachments in categories no longer on
# the list of inclusions or that have been added to the list of exclusions.
- my $flags = $dbh->selectall_arrayref('SELECT flags.id, flags.bug_id, flags.attach_id
+ my $flags = $dbh->selectall_arrayref('SELECT DISTINCT flags.id, flags.bug_id,
+ flags.attach_id
FROM flags
INNER JOIN bugs
ON flags.bug_id = bugs.bug_id
@@ -408,7 +409,7 @@ sub update {
Bugzilla::Flag::clear($flag_id, $bug, $attachment);
}
- $flags = $dbh->selectall_arrayref('SELECT flags.id, flags.bug_id, flags.attach_id
+ $flags = $dbh->selectall_arrayref('SELECT DISTINCT flags.id, flags.bug_id, flags.attach_id
FROM flags
INNER JOIN bugs
ON flags.bug_id = bugs.bug_id