From 0e41bda17fca72191e1342fd8eae53ae922c45dd Mon Sep 17 00:00:00 2001 From: "cyeh%bluemartini.com" <> Date: Tue, 27 Feb 2001 06:50:58 +0000 Subject: 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. --- process_bug.cgi | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'process_bug.cgi') diff --git a/process_bug.cgi b/process_bug.cgi index 74780acb7..061dadc93 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; -- cgit v1.2.3-24-g4f1b