--- rsa.c.orig Fri Mar 25 14:01:48 1994 +++ rsa.c Mon Dec 13 13:10:28 1999 @@ -33,6 +33,9 @@ unsigned char byte, pkcsBlock[MAX_RSA_MODULUS_LEN]; unsigned int i, modulusLen; + if (publicKey->bits > MAX_RSA_MODULUS_BITS) + return (RE_LEN); + modulusLen = (publicKey->bits + 7) / 8; if (inputLen + 11 > modulusLen) return (RE_LEN); @@ -78,6 +81,9 @@ unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN]; unsigned int i, modulusLen, pkcsBlockLen; + if (publicKey->bits > MAX_RSA_MODULUS_BITS) + return (RE_LEN); + modulusLen = (publicKey->bits + 7) / 8; if (inputLen > modulusLen) return (RE_LEN); @@ -128,6 +134,9 @@ int status; unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN]; unsigned int i, modulusLen; + + if (privateKey->bits > MAX_RSA_MODULUS_BITS) + return (RE_LEN); modulusLen = (privateKey->bits + 7) / 8; if (inputLen + 11 > modulusLen) @@ -168,6 +177,9 @@ unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN]; unsigned int i, modulusLen, pkcsBlockLen; + if (privateKey->bits > MAX_RSA_MODULUS_BITS) + return (RE_LEN); + modulusLen = (privateKey->bits + 7) / 8; if (inputLen > modulusLen) return (RE_LEN);