diff options
Diffstat (limited to 'Bugzilla/WebService/Server/JSONRPC.pm')
-rw-r--r-- | Bugzilla/WebService/Server/JSONRPC.pm | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/Bugzilla/WebService/Server/JSONRPC.pm b/Bugzilla/WebService/Server/JSONRPC.pm index 5ab5e4a7b..3ff875361 100644 --- a/Bugzilla/WebService/Server/JSONRPC.pm +++ b/Bugzilla/WebService/Server/JSONRPC.pm @@ -27,9 +27,10 @@ use base qw(JSON::RPC::Server::CGI Bugzilla::WebService::Server); use Bugzilla::Error; use Bugzilla::WebService::Constants; use Bugzilla::WebService::Util qw(taint_data); - use Bugzilla::Util qw(correct_urlbase trim); +use MIME::Base64 qw(decode_base64); + ##################################### # Public JSON::RPC Method Overrides # ##################################### @@ -326,6 +327,12 @@ sub _argument_type_check { } } } + my @base64_fields = @{ $pkg->BASE64_FIELDS->{$method} || [] }; + foreach my $field (@base64_fields) { + if (defined $params->{$field}) { + $params->{$field} = decode_base64($params->{$field}); + } + } Bugzilla->input_params($params); @@ -503,6 +510,11 @@ to be fully safe for forward-compatibility with all future versions of Bugzilla, it is safest to pass in all times as UTC with the "Z" timezone specifier.) +C<base64> fields are strings that have been base64 encoded. Note that +although normal base64 encoding includes newlines to break up the data, +newlines within a string are not valid JSON, so you should not insert +newlines into your base64-encoded string. + All other types are standard JSON types. =head1 ERRORS |