]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crypto: catch cryptopp decrypt/encrypt exceptions
authorYehuda Sadeh <yehuda@hq.newdream.net>
Tue, 14 Dec 2010 18:51:08 +0000 (10:51 -0800)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Tue, 14 Dec 2010 18:51:46 +0000 (10:51 -0800)
src/auth/Crypto.cc

index 467e086b3c9d40bafdd9e229f8422774d6580a0f..b03e2083ba2cf6312295f468a3a3f01adfcb7265 100644 (file)
@@ -154,7 +154,12 @@ int CryptoAES::encrypt(bufferptr& secret, const bufferlist& in, bufferlist& out)
 
     stfEncryptor.Put(in_buf, it->length());
   }
-  stfEncryptor.MessageEnd();
+  try {
+    stfEncryptor.MessageEnd();
+  } catch (CryptoPP::Exception& e) {
+    dout(0) << "encryptor.MessageEnd::Exception: " << e.GetWhat() << dendl;
+    return false;
+  }
   out.append((const char *)ciphertext.c_str(), ciphertext.length());
 
   return true;
@@ -178,7 +183,12 @@ int CryptoAES::decrypt(bufferptr& secret, const bufferlist& in, bufferlist& out)
       stfDecryptor.Put(in_buf, it->length());
   }
 
-  stfDecryptor.MessageEnd();
+  try {
+    stfDecryptor.MessageEnd();
+  } catch (CryptoPP::Exception& e) {
+    dout(0) << "decryptor.MessageEnd::Exception: " << e.GetWhat() << dendl;
+    return -EINVAL;
+  }
 
   out.append((const char *)decryptedtext.c_str(), decryptedtext.length());
   return decryptedtext.length();