Merge "Throw ShortBufferException in RSA CipherSpi."
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java
index b7966ef..5154a20 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java
@@ -18,6 +18,7 @@
 import javax.crypto.Cipher;
 import javax.crypto.IllegalBlockSizeException;
 import javax.crypto.NoSuchPaddingException;
+import javax.crypto.ShortBufferException;
 import javax.crypto.spec.OAEPParameterSpec;
 import javax.crypto.spec.PSource;
 
@@ -499,8 +500,14 @@
         int     inputLen,
         byte[]  output,
         int     outputOffset) 
-        throws IllegalBlockSizeException, BadPaddingException
+        throws IllegalBlockSizeException, BadPaddingException, ShortBufferException
     {
+        // BEGIN Android-added: Throw ShortBufferException when given a short buffer.
+        if (engineGetOutputSize(inputLen) > output.length - outputOffset)
+        {
+            throw new ShortBufferException("output buffer too short for input.");
+        }
+        // END Android-added: Throw ShortBufferException when given a short buffer.
         if (input != null)
         {
             bOut.write(input, inputOffset, inputLen);