Remove objects from logged error messages

beta
Vitaliy Filippov 2019-12-25 19:58:40 +03:00
parent bbcb30140c
commit ce04ad9344
1 changed files with 23 additions and 1 deletions

View File

@ -20,6 +20,7 @@ use Bugzilla::Mailer;
use Date::Format;
use JSON;
use Data::Dumper;
use Scalar::Util qw(blessed);
use overload '""' => sub { $_[0]->{message} };
@ -66,12 +67,33 @@ sub _error_message
{
$cgivars->{$_} = $cgi->uploadInfo($cgivars->{$_}) if $cgi->upload($_);
}
$mesg .= Data::Dumper->Dump([$vars, $cgivars, { %ENV }], ['error_vars', 'cgi_params', 'env']);
$mesg .= Data::Dumper->Dump([remove_objects($vars), $cgivars, { %ENV }], ['error_vars', 'cgi_params', 'env']);
# ugly workaround for Data::Dumper's \x{425} unicode characters
$mesg =~ s/((?:\\x\{(?:[\dA-Z]+)\})+)/eval("\"$1\"")/egiso;
return $mesg;
}
sub remove_objects
{
my ($v) = @_;
if (blessed $v)
{
return "$v";
}
elsif (ref($v) eq 'HASH')
{
return { map { ($_ => remove_objects($v->{$_})) } keys %$v };
}
elsif (ref($v) eq 'ARRAY')
{
return [ map { remove_objects($_) } @$v ];
}
else
{
return $v;
}
}
sub throw
{
my $self = shift;