From ed23c5e31e335f1492af592377956e53f8473a91 Mon Sep 17 00:00:00 2001 From: David Lawrence Date: Thu, 14 May 2026 09:25:30 -0400 Subject: [PATCH 1/3] Bug 2033979 --- Bugzilla/BugMail.pm | 43 +++++++++++++------ .../en/default/email/bugmail.txt.tmpl | 4 +- extensions/SecureMail/Extension.pm | 23 ---------- template/en/default/email/bugmail.txt.tmpl | 4 +- 4 files changed, 35 insertions(+), 39 deletions(-) diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index 0a7d786738..90e081d0be 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -317,17 +317,30 @@ sub Send { Bugzilla::Hook::process('bugmail_referenced_bugs', {updated_bug => $bug, referenced_bugs => $referenced_bugs}); + # Reuse the already-filtered, hook-processed entry from $referenced_bugs + # for the blocker's short_desc. The blocker id was added to @referenced_bugs + # earlier; after visible_bugs filtering and bugmail_referenced_bugs hook + # processing above, its entry (if the user can see it) is already in + # $referenced_bugs with any SecureMail redaction applied. + my $blocker_short_desc; + if ($params->{dep_only}) { + my $blocker_id = $params->{blocker}->id; + my ($blocker_entry) = grep { $_->{id} == $blocker_id } @$referenced_bugs; + $blocker_short_desc = $blocker_entry->{short_desc} if $blocker_entry; + } + my $sent_mail = sendMail({ - to => $user, - bug => $bug, - comments => $comments, - date => $date, - changer => $changer, - watchers => exists $watching{$user_id} ? $watching{$user_id} : undef, - diffs => \@diffs, - rels_which_want => \%rels_which_want, - referenced_bugs => $referenced_bugs, - dep_only => $params->{dep_only} + to => $user, + bug => $bug, + comments => $comments, + date => $date, + changer => $changer, + watchers => exists $watching{$user_id} ? $watching{$user_id} : undef, + diffs => \@diffs, + rels_which_want => \%rels_which_want, + referenced_bugs => $referenced_bugs, + dep_only => $params->{dep_only}, + blocker_short_desc => $blocker_short_desc, }); push(@sent, $user->login) if $sent_mail; } @@ -356,8 +369,9 @@ sub sendMail { my $watchingRef = $params->{watchers}; my @diffs = @{$params->{diffs}}; my $relRef = $params->{rels_which_want}; - my $referenced_bugs = $params->{referenced_bugs}; - my $dep_only = $params->{dep_only}; + my $referenced_bugs = $params->{referenced_bugs}; + my $dep_only = $params->{dep_only}; + my $blocker_short_desc = $params->{blocker_short_desc}; my $attach_id; # Only display changes the user is allowed see. @@ -457,8 +471,9 @@ sub sendMail { changedfieldnames => \@changedfieldnames, new_comments => \@send_comments, threadingmarker => build_thread_marker($bug->id, $user->id, !$bug->lastdiffed), - referenced_bugs => $referenced_bugs, - bugmailtype => $bugmailtype, + referenced_bugs => $referenced_bugs, + bugmailtype => $bugmailtype, + blocker_short_desc => $blocker_short_desc, }; if (Bugzilla->get_param_with_override('use_mailer_queue')) { diff --git a/extensions/BMO/template/en/default/email/bugmail.txt.tmpl b/extensions/BMO/template/en/default/email/bugmail.txt.tmpl index 9cb020b021..123b1280e4 100644 --- a/extensions/BMO/template/en/default/email/bugmail.txt.tmpl +++ b/extensions/BMO/template/en/default/email/bugmail.txt.tmpl @@ -73,7 +73,9 @@ Product/Component: [%+ bug.product +%] :: [%+ bug.component %] [% IF change.blocker %] [% terms.Bug %] [%+ bug.id %] depends on [% terms.bug %] [%+ change.blocker.id %], which changed state. -[%+ terms.Bug %] [%+ change.blocker.id %] Summary: [% change.blocker.short_desc %] +[% IF blocker_short_desc -%] +[%+ terms.Bug %] [%+ change.blocker.id %] Summary: [% blocker_short_desc %] +[% END -%] [%+ urlbase %]show_bug.cgi?id=[% change.blocker.id %] [% ELSE %] [%~ changer.identity %] changed: diff --git a/extensions/SecureMail/Extension.pm b/extensions/SecureMail/Extension.pm index 699b3e1fc9..d12a1a6e7e 100644 --- a/extensions/SecureMail/Extension.pm +++ b/extensions/SecureMail/Extension.pm @@ -217,29 +217,6 @@ sub user_preferences { $$handled = 1; } -sub template_before_process { - my ($self, $args) = @_; - my $file = $args->{'file'}; - my $vars = $args->{'vars'}; - - # Bug dependency emails contain the subject of the dependent bug - # right before the diffs when a status has gone from open/closed - # or closed/open. We need to sanitize the subject of change.blocker - # similar to how we do referenced bugs - return - unless $file eq 'email/bugmail.html.tmpl' - || $file eq 'email/bugmail.txt.tmpl'; - - if (defined $vars->{diffs}) { - foreach my $change (@{$vars->{diffs}}) { - next if !defined $change->{blocker}; - if (grep($_->secure_mail, @{$change->{blocker}->groups_in})) { - $change->{blocker}->{short_desc} = "(Secure bug)"; - } - } - } -} - sub _send_test_email { my ($user) = @_; my $template = Bugzilla->template_inner($user->settings->{'lang'}->{'value'}); diff --git a/template/en/default/email/bugmail.txt.tmpl b/template/en/default/email/bugmail.txt.tmpl index 525070d99d..182970a366 100644 --- a/template/en/default/email/bugmail.txt.tmpl +++ b/template/en/default/email/bugmail.txt.tmpl @@ -66,7 +66,9 @@ You are receiving this mail because: [% IF change.blocker %] [% terms.Bug %] [%+ bug.id %] depends on [% terms.bug %] [%+ change.blocker.id %], which changed state. -[%+ terms.Bug %] [%+ change.blocker.id %] Summary: [% change.blocker.short_desc %] +[% IF blocker_short_desc -%] +[%+ terms.Bug %] [%+ change.blocker.id %] Summary: [% blocker_short_desc %] +[% END -%] [%+ urlbase %]show_bug.cgi?id=[% change.blocker.id %] [% ELSE %] [%~ changer.identity %] changed: From eb7ad2905030eb861e78a0e3fbdd7823c2b8f30e Mon Sep 17 00:00:00 2001 From: David Lawrence Date: Thu, 14 May 2026 09:54:39 -0400 Subject: [PATCH 2/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- extensions/BMO/template/en/default/email/bugmail.txt.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/BMO/template/en/default/email/bugmail.txt.tmpl b/extensions/BMO/template/en/default/email/bugmail.txt.tmpl index 123b1280e4..6fefa2295d 100644 --- a/extensions/BMO/template/en/default/email/bugmail.txt.tmpl +++ b/extensions/BMO/template/en/default/email/bugmail.txt.tmpl @@ -73,7 +73,7 @@ Product/Component: [%+ bug.product +%] :: [%+ bug.component %] [% IF change.blocker %] [% terms.Bug %] [%+ bug.id %] depends on [% terms.bug %] [%+ change.blocker.id %], which changed state. -[% IF blocker_short_desc -%] +[% IF blocker_short_desc.length -%] [%+ terms.Bug %] [%+ change.blocker.id %] Summary: [% blocker_short_desc %] [% END -%] [%+ urlbase %]show_bug.cgi?id=[% change.blocker.id %] From f697dc8ed5f188588528ffeb31b010dceea74b78 Mon Sep 17 00:00:00 2001 From: David Lawrence Date: Thu, 14 May 2026 09:54:47 -0400 Subject: [PATCH 3/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- template/en/default/email/bugmail.txt.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/en/default/email/bugmail.txt.tmpl b/template/en/default/email/bugmail.txt.tmpl index 182970a366..9bfbc15bf7 100644 --- a/template/en/default/email/bugmail.txt.tmpl +++ b/template/en/default/email/bugmail.txt.tmpl @@ -66,7 +66,7 @@ You are receiving this mail because: [% IF change.blocker %] [% terms.Bug %] [%+ bug.id %] depends on [% terms.bug %] [%+ change.blocker.id %], which changed state. -[% IF blocker_short_desc -%] +[% IF blocker_short_desc.defined -%] [%+ terms.Bug %] [%+ change.blocker.id %] Summary: [% blocker_short_desc %] [% END -%] [%+ urlbase %]show_bug.cgi?id=[% change.blocker.id %]