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);