From: cyeh%bluemartini.com <> Date: Tue, 27 Feb 2001 06:50:58 +0000 (+0000) Subject: fix for bug 51670: Dependency loops are possible X-Git-Tag: bugzilla-2.12~85 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e41bda17fca72191e1342fd8eae53ae922c45dd;p=thirdparty%2Fbugzilla.git fix for bug 51670: Dependency loops are possible we now search each list (dependson, blocks) to see if a bug number shows up in each list. a bug can't be dependent upon and block the same bug. also make it so you can't set a bug blocking or dependent on itself. --- diff --git a/process_bug.cgi b/process_bug.cgi index 74780acb76..061dadc93b 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -755,6 +755,9 @@ The changes made were: if ($comp ne $i) { PuntTryAgain("$i is not a legal bug number"); } + if ($id eq $i) { + PuntTryAgain("You can't make a bug blocked or dependent on itself."); + } if (!exists $seen{$i}) { push(@{$deps{$target}}, $i); $seen{$i} = 1; @@ -778,8 +781,27 @@ The changes made were: } } } - + if ($me eq 'dependson') { + my @deps = @{$deps{'dependson'}}; + my @blocks = @{$deps{'blocked'}}; + my @union = (); + my @isect = (); + my %union = (); + my %isect = (); + foreach my $b (@deps, @blocks) { $union{$b}++ && $isect{$b}++ } + @union = keys %union; + @isect = keys %isect; + if (@isect > 0) { + my $both; + foreach my $i (@isect) { + $both = $both . "#" . $i . " "; + } + PuntTryAgain("Dependency loop detected!
" . + "This bug can't be both blocked and dependent " . + "on bug " . $both . "!"); + } + } my $tmp = $me; $me = $target; $target = $tmp;