summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Util.pm4
-rwxr-xr-xchecksetup.pl18
-rwxr-xr-xpost_bug.cgi5
-rwxr-xr-xprocess_bug.cgi1
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");