Commit 608b923a authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 525025: Custom field names having UTF8-characters in them crash Bugzilla -…

Bug 525025: Custom field names having UTF8-characters in them crash Bugzilla - Patch by Fré©ric Buclin <LpSolit@gmail.com> r/a=mkanat
parent 86e90144
......@@ -273,7 +273,7 @@ sub _check_name {
my $name_regex = qr/^[\w\.]+$/;
# Custom fields have more restrictive name requirements than
# standard fields.
$name_regex = qr/^\w+$/ if $is_custom;
$name_regex = qr/^[a-zA-Z0-9_]+$/ if $is_custom;
# Custom fields can't be named just "cf_", and there is no normal
# field named just "cf_".
($name =~ $name_regex && $name ne "cf_")
......
......@@ -583,6 +583,9 @@ sub update_table_definitions {
# 2009-09-28 LpSolit@gmail.com - Bug 399073
_fix_logincookies_ipaddr();
# 2009-11-01 LpSolit@gmail.com - Bug 525025
_fix_invalid_custom_field_names();
################################################################
# New --TABLE-- changes should go *** A B O V E *** this point #
################################################################
......@@ -3219,6 +3222,19 @@ sub _fix_logincookies_ipaddr {
undef, '0.0.0.0');
}
sub _fix_invalid_custom_field_names {
my @fields = Bugzilla->get_fields({ custom => 1 });
foreach my $field (@fields) {
next if $field->name =~ /^[a-zA-Z0-9_]+$/;
# The field name is illegal and can break the DB. Kill the field!
$field->set_obsolete(1);
eval { $field->remove_from_db(); };
print "Removing custom field '" . $field->name . "' (illegal name)... ";
print $@ ? "failed\n$@\n" : "succeeded\n";
}
}
1;
__END__
......
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