rgw: fix rgw crash and set correct error code
Reviewed-by: Matt Benjamin <mbenjamin@redhat.com>
Reviewed-by: Pritha Srivastava <prsrivas@redhat.com>
ret = keyhandler->decrypt(en_input, dec_output, &error);
if (ret < 0) {
- ldout(cct, 0) << "ERROR: Decryption failed: " << error << dendl;
+ ldpp_dout(dpp, 0) << "ERROR: Decryption failed: " << error << dendl;
return -EPERM;
} else {
- dec_output.append('\0');
- auto iter = dec_output.cbegin();
- decode(token, iter);
+ try {
+ dec_output.append('\0');
+ auto iter = dec_output.cbegin();
+ decode(token, iter);
+ } catch (const buffer::error& e) {
+ ldout(cct, 0) << "ERROR: decode SessionToken failed: " << error << dendl;
+ return -EINVAL;
+ }
}
return 0;
}