*** rsa.original.c	Fri Mar 25 14:01:48 1994
--- rsa.c	Fri Dec 10 12:56:34 1999
***************
*** 33,38 ****
--- 33,41 ----
    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,83 ****
--- 81,89 ----
    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,133 ****
--- 134,142 ----
    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,173 ****
--- 177,185 ----
    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);

