diff options
-rw-r--r-- | Bugzilla/Util.pm | 4 | ||||
-rwxr-xr-x | checksetup.pl | 18 | ||||
-rwxr-xr-x | post_bug.cgi | 5 | ||||
-rwxr-xr-x | process_bug.cgi | 1 |
4 files changed, 25 insertions, 3 deletions
diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index 31a1052e4..28f5e71bc 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -392,8 +392,8 @@ sub is_7bit_clean { sub clean_text { my ($dtext) = shift; - $dtext =~ s/[\x00-\x1F\x7F]/ /g; # change control characters to spaces - return $dtext; + $dtext =~ s/[\x00-\x1F\x7F]+/ /g; # change control characters into a space + return trim($dtext); } 1; diff --git a/checksetup.pl b/checksetup.pl index e8528aee1..56db99b46 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -4239,6 +4239,24 @@ $dbh->bz_alter_column('groups', 'userregexp', $dbh->bz_alter_column('logincookies', 'cookie', {TYPE => 'varchar(16)', PRIMARYKEY => 1, NOTNULL => 1}); +# Fixup for Bug 101380 +# "Newlines, nulls, leading/trailing spaces are getting into summaries" + +my $controlchar_bugs = + $dbh->selectall_arrayref("SELECT short_desc, bug_id FROM bugs WHERE " . + $dbh->sql_regexp('short_desc', "'[[:cntrl:]]'")); +if (@$controlchar_bugs) +{ + print 'Cleaning control characters from bug summaries...'; + foreach (@$controlchar_bugs) { + my ($short_desc, $bug_id) = @$_; + print " $bug_id..."; + $short_desc = clean_text($short_desc); + $dbh->do("UPDATE bugs SET short_desc = ? WHERE bug_id = ?", + undef, $short_desc, $bug_id); + } + print " done.\n"; +} # If you had to change the --TABLE-- definition in any way, then add your # differential change code *** A B O V E *** this comment. diff --git a/post_bug.cgi b/post_bug.cgi index 3d2d6ab48..4d8c6a2c9 100755 --- a/post_bug.cgi +++ b/post_bug.cgi @@ -108,8 +108,11 @@ my $component_id = get_component_id($product_id, scalar($cgi->param('component'))); $component_id || ThrowUserError("require_component"); +# Set the parameter to itself, but cleaned up +$cgi->param('short_desc', clean_text($cgi->param('short_desc'))); + if (!defined $cgi->param('short_desc') - || trim($cgi->param('short_desc')) eq "") { + || $cgi->param('short_desc') eq "") { ThrowUserError("require_summary"); } diff --git a/process_bug.cgi b/process_bug.cgi index 77496f2a3..79ad8e517 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -611,6 +611,7 @@ if (defined $cgi->param('id')) { check_form_field_defined($cgi, 'bug_file_loc'); check_form_field_defined($cgi, 'short_desc'); check_form_field_defined($cgi, 'longdesclength'); + $cgi->param('short_desc', clean_text($cgi->param('short_desc'))); if (trim($cgi->param('short_desc')) eq "") { ThrowUserError("require_summary"); |