This will catch buffer decoding errors (maybe the block is empty) and
return an error string.
May fix (or possibly paper over) #3459.
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
bufferlist::iterator& iter, std::string &error)
{
bufferlist bl_enc;
- ::decode(bl_enc, iter);
- decode_decrypt_enc_bl(cct, t, key, bl_enc, error);
+ try {
+ ::decode(bl_enc, iter);
+ decode_decrypt_enc_bl(cct, t, key, bl_enc, error);
+ }
+ catch (buffer::error e) {
+ error = "error decoding block for decryption";
+ }
if (!error.empty())
return CEPHX_CRYPT_ERR;
return 0;