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 { ...@@ -2791,14 +2791,14 @@ sub remove_group {
} }
sub add_see_also { sub add_see_also {
my ($self, $input) = @_; my ($self, $input, $skip_recursion) = @_;
$input = trim($input); $input = trim($input);
# If a bug id/alias has been taken, then treat it # If a bug id/alias has been taken, then treat it
# as a link to the local Bugzilla. # as a link to the local Bugzilla.
my $local_bug_uri = correct_urlbase() . "show_bug.cgi?id="; my $local_bug_uri = correct_urlbase() . "show_bug.cgi?id=";
if (my ($id) = $input =~ m/^(\w+)$/) { if ($input =~ m/^\w+$/) {
$input = $local_bug_uri . $id; $input = $local_bug_uri . $input;
} }
# We assume that the URL is an HTTP URL if there is no (something):// # We assume that the URL is an HTTP URL if there is no (something)://
...@@ -2900,7 +2900,7 @@ sub add_see_also { ...@@ -2900,7 +2900,7 @@ sub add_see_also {
# See Also field of the referenced bug is updated # See Also field of the referenced bug is updated
# to point to the current bug. # 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); my $ref_bug = Bugzilla::Bug->check($bug_id);
if ($ref_bug->id == $self->id) { if ($ref_bug->id == $self->id) {
ThrowUserError('see_also_self_reference'); ThrowUserError('see_also_self_reference');
...@@ -2912,11 +2912,9 @@ sub add_see_also { ...@@ -2912,11 +2912,9 @@ sub add_see_also {
{ product => $product->name }); { 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; my $ref_input = $local_bug_uri . $self->id;
if (!grep($ref_input, @{ $ref_bug->see_also })) { 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; 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