summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CGI.pl14
-rwxr-xr-xpost_bug.cgi7
-rwxr-xr-xprocess_bug.cgi6
-rw-r--r--template/en/default/global/code-error.html.tmpl18
4 files changed, 29 insertions, 16 deletions
diff --git a/CGI.pl b/CGI.pl
index de2d38085..d16a94883 100644
--- a/CGI.pl
+++ b/CGI.pl
@@ -218,11 +218,13 @@ sub CheckFormField (\%$;\@) {
SendSQL("SELECT description FROM fielddefs WHERE name=" . SqlQuote($fieldname));
my $result = FetchOneColumn();
if ($result) {
- ThrowCodeError("A legal $result was not set.", undef, "abort");
+ $vars->{'field'} = $result;
}
else {
- ThrowCodeError("A legal $fieldname was not set.", undef, "abort");
+ $vars->{'field'} = $fieldname;
}
+
+ ThrowCodeError("illegal_field", "abort");
}
}
@@ -233,9 +235,9 @@ sub CheckFormFieldDefined (\%$) {
) = @_;
if (!defined $formRef->{$fieldname}) {
- ThrowCodeError("$fieldname was not defined; " .
- Param("browserbugmessage"));
- }
+ $vars->{'field'} = $fieldname;
+ ThrowCodeError("undefined_field");
+ }
}
sub BugAliasToID {
@@ -876,7 +878,7 @@ sub DisplayError {
# For "this shouldn't happen"-type places in the code.
# $vars->{'variables'} is a reference to a hash of useful debugging info.
sub ThrowCodeError {
- ($vars->{'error'}, $vars->{'variables'}, my $unlock_tables) = (@_);
+ ($vars->{'error'}, my $unlock_tables, $vars->{'variables'}) = (@_);
SendSQL("UNLOCK TABLES") if $unlock_tables;
diff --git a/post_bug.cgi b/post_bug.cgi
index 2b4859ccd..9d3c0cca9 100755
--- a/post_bug.cgi
+++ b/post_bug.cgi
@@ -251,15 +251,14 @@ foreach my $b (grep(/^bit-\d*$/, keys %::FORM)) {
if ($::FORM{$b}) {
my $v = substr($b, 4);
$v =~ /^(\d+)$/
- || ThrowCodeError("One of the group bits submitted was invalid.",
- undef, "abort");
+ || ThrowCodeError("group_bit_invalid", "abort");
if (!GroupIsActive($v)) {
# Prevent the user from adding the bug to an inactive group.
# Should only happen if there is a bug in Bugzilla or the user
# hacked the "enter bug" form since otherwise the UI
# for adding the bug to the group won't appear on that form.
- ThrowCodeError("Attempted to add bug to an inactive group, " .
- "identified by the bit '$v'.", undef, "abort");
+ $vars->{'bit'} = $v;
+ ThrowCodeError("inactive_group", "abort");
}
$sql .= " + $v"; # Carefully written so that the math is
# done by MySQL, which can handle 64-bit math,
diff --git a/process_bug.cgi b/process_bug.cgi
index c4a9af033..f1b074268 100755
--- a/process_bug.cgi
+++ b/process_bug.cgi
@@ -805,9 +805,9 @@ SWITCH: for ($::FORM{'knob'}) {
last SWITCH;
};
- # default
- my $escaped_knob = html_quote($::FORM{'knob'});
- ThrowCodeError("Unknown action $escaped_knob!\n");
+
+ $vars->{'action'} = $::FORM{'knob'};
+ ThrowCodeError("unknown_action");
}
diff --git a/template/en/default/global/code-error.html.tmpl b/template/en/default/global/code-error.html.tmpl
index 64bf5064e..d731dbc49 100644
--- a/template/en/default/global/code-error.html.tmpl
+++ b/template/en/default/global/code-error.html.tmpl
@@ -42,13 +42,25 @@
to any [% parameters %] which you may have set before calling
ThrowCodeError.
- [% ELSIF error == "another_error_tag" %]
- This is another sample error, without a special title. This
- should be the usual usage for this file. This sample can be removed.
+ [% ELSIF error == "group_bit_invalid" %]
+ One of the group bits submitted was invalid.
+ [% ELSIF error == "illegal_field" %]
+ A legal [% field FILTER html %] was not set.
+
+ [% ELSIF error == "inactive_group" %]
+ Attempted to add bug to an inactive group, identified by the bit
+ '[% bit FILTER html %]'.
+
[% ELSIF error == "template_error" %]
[% template_error_msg %]
+ [% ELSIF error == "undefined_field" %]
+ [% field FILTER html %] was not defined; [% Param('browserbugmessage') %]
+
+ [% ELSIF error == "unknown_action" %]
+ Unknown action [% action FILTER html %]!
+
[% ELSE %]
[%# Cope with legacy calling convention, where "error" was the string
# to print.