]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
auth: guard decode_decrypt with try block
authorSage Weil <sage@inktank.com>
Thu, 13 Dec 2012 06:01:03 +0000 (22:01 -0800)
committerSage Weil <sage@inktank.com>
Thu, 13 Dec 2012 06:01:03 +0000 (22:01 -0800)
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>
src/auth/cephx/CephxProtocol.h

index dfa2b2f0896f8d03aacf45ec7e70405b80ed7ddd..38e0616b501ed242e22e094b256828b0d8db6e7f 100644 (file)
@@ -470,8 +470,13 @@ int decode_decrypt(CephContext *cct, T& t, const CryptoKey key,
                    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;