Commit 7df51287 authored by Max Kanat-Alexander's avatar Max Kanat-Alexander

If an installation had not yet set the urlbase parameter, then inserting

*any* URL into the see_also field would cause it to think you were linking a local bug. https://bugzilla.mozilla.org/show_bug.cgi?id=549586
parent 5825d09f
......@@ -2791,14 +2791,14 @@ sub remove_group {
}
sub add_see_also {
my ($self, $input) = @_;
my ($self, $input, $skip_recursion) = @_;
$input = trim($input);
# If a bug id/alias has been taken, then treat it
# as a link to the local Bugzilla.
my $local_bug_uri = correct_urlbase() . "show_bug.cgi?id=";
if (my ($id) = $input =~ m/^(\w+)$/) {
$input = $local_bug_uri . $id;
if ($input =~ m/^\w+$/) {
$input = $local_bug_uri . $input;
}
# We assume that the URL is an HTTP URL if there is no (something)://
......@@ -2900,7 +2900,7 @@ sub add_see_also {
# See Also field of the referenced bug is updated
# to point to the current bug.
if ($result =~ m/\Q$local_bug_uri\E/) {
if ($result =~ m/^\Q$local_bug_uri\E/ and !$skip_recursion) {
my $ref_bug = Bugzilla::Bug->check($bug_id);
if ($ref_bug->id == $self->id) {
ThrowUserError('see_also_self_reference');
......@@ -2912,11 +2912,9 @@ sub add_see_also {
{ product => $product->name });
}
# We add it directly instead of calling $ref_bug->add_see_also
# to avoid recursion.
my $ref_input = $local_bug_uri . $self->id;
if (!grep($ref_input, @{ $ref_bug->see_also })) {
push @{ $ref_bug->see_also }, $ref_input;
$ref_bug->add_see_also($ref_input, 'skip recursion');
push @{ $self->{see_also_update} }, $ref_bug;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment