X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FCGI%2FBugreport.pm;h=7f58514dbe3cb97bb68f3ed5cda6af9989b2ccad;hb=f0163c2e0ad2b57dd52c746427b0a1c05ab8bd59;hp=a01c2de4ff568a318aa18a62a2555581923f7077;hpb=4378e9e59b88aa16ac6e170bc968affd9c86f23f;p=debbugs.git diff --git a/Debbugs/CGI/Bugreport.pm b/Debbugs/CGI/Bugreport.pm index a01c2de..7f58514 100644 --- a/Debbugs/CGI/Bugreport.pm +++ b/Debbugs/CGI/Bugreport.pm @@ -34,7 +34,8 @@ use IO::Scalar; use Params::Validate qw(validate_with :types); use Debbugs::MIME qw(convert_to_utf8 decode_rfc1522 create_mime_message); use Debbugs::CGI qw(:url :html :util); -use Debbugs::Common qw(globify_scalar); +use Debbugs::Common qw(globify_scalar english_join); +use Debbugs::Config qw(:config); use POSIX qw(strftime); BEGIN{ @@ -251,7 +252,13 @@ sub display_entity { $temp =~ s{(\d+)} {bug_links(bug=>$1)}ge; $temp;]gxie; - + if (defined $config{cve_tracker} and + length $config{cve_tracker} + ) { + # Add links to CVE vulnerabilities (closes #568464) + $body =~ s{(^|\s)(CVE-\d{4}-\d{4,})(\s|[,.-]|$)} + {$1$2$3}gxm; + } if (not exists $param{att}) { print {$param{output}} qq(
$body
\n); } @@ -292,6 +299,7 @@ sub handle_email_message{ terse => $param{terse}, exists $param{msg}?(msg=>$param{msg}):(), exists $param{att}?(att=>$param{att}):(), + exists $param{trim_headers}?(trim_headers=>$param{trim_headers}):(), ); return $output; @@ -314,11 +322,11 @@ sub handle_record{ local $_ = $record->{type}; if (/html/) { my ($time) = $record->{text} =~ //; - my $class = $record->{text} =~ /^(?:Acknowledgement|Reply|Information|Report|Notification)/ ? 'infmessage':'msgreceived'; + my $class = $record->{text} =~ /^(?:Acknowledgement|Reply|Information|Report|Notification)/m ? 'infmessage':'msgreceived'; $output .= decode_rfc1522($record->{text}); # Link to forwarded http:// urls in the midst of the report # (even though these links already exist at the top) - $output =~ s,((?:ftp|http|https)://[\S~-]+?/?)([\)\'\:\.\,]?(?:\s|\.<|$)),$1$2,go; + $output =~ s,((?:ftp|http|https)://[\S~-]+?/?)((?:[\)\'\:\.\,]|\&\#39;)?(?:\s|\.<|$)),$1$2,go; # Add links to the cloned bugs $output =~ s{(Bug )(\d+)( cloned as bugs? )(\d+)(?:\-(\d+)|)}{$1.bug_links(bug=>$2).$3.bug_links(bug=>(defined $5)?[$4..$5]:$4)}eo; # Add links to merged bugs @@ -326,7 +334,11 @@ sub handle_record{ # Add links to blocked bugs $output =~ s{(?<=Blocking bugs)(?:( of )(\d+))?( (?:added|set to|removed):\s+)([\d\s\,]+)} {(defined $2?$1.bug_links(bug=>$2):'').$3. - join(' ',map {bug_links(bug=>$_)} (split /\,?\s+/, $4))}eo; + english_join([map {bug_links(bug=>$_)} (split /\,?\s+/, $4)])}eo; + $output =~ s{((?:[Aa]dded|[Rr]emoved)\ blocking\ bug(?:\(s\))?)(?:(\ of\ )(\d+))?(:?\s+) + (\d+(?:,\s+\d+)*(?:\,?\s+and\s+\d+)?)} + {$1.(defined $3?$2.bug_links(bug=>$3):'').$4. + english_join([map {bug_links(bug=>$_)} (split /\,?\s+(?:and\s+)?/, $5)])}xeo; # Add links to reassigned packages $output =~ s{(Bug reassigned from package \`)([^']+?)((?:'|\&\#39;) to \`)([^']+?)((?:'|\&\#39;))} {$1.q($2).$3.q($4).$5}eo;