e57df8ae94
(believed more complete than previous fix).
75 lines
2.8 KiB
Text
75 lines
2.8 KiB
Text
$NetBSD: patch-ah,v 1.3 1999/12/14 21:43:06 sommerfeld Exp $
|
|
|
|
--- ../source/rsa.c.orig Fri Mar 25 14:01:48 1994
|
|
+++ ../source/rsa.c Tue Dec 14 16:28:19 1999
|
|
@@ -11,10 +11,10 @@
|
|
#include "rsa.h"
|
|
#include "nn.h"
|
|
|
|
-static int RSAPublicBlock PROTO_LIST
|
|
+int RSAPublicBlock PROTO_LIST
|
|
((unsigned char *, unsigned int *, unsigned char *, unsigned int,
|
|
R_RSA_PUBLIC_KEY *));
|
|
-static int RSAPrivateBlock PROTO_LIST
|
|
+int RSAPrivateBlock PROTO_LIST
|
|
((unsigned char *, unsigned int *, unsigned char *, unsigned int,
|
|
R_RSA_PRIVATE_KEY *));
|
|
|
|
@@ -33,6 +33,9 @@
|
|
unsigned char byte, pkcsBlock[MAX_RSA_MODULUS_LEN];
|
|
unsigned int i, modulusLen;
|
|
|
|
+ if (inputLen+3>MAX_RSA_MODULUS_LEN) return (RE_LEN);
|
|
+ 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 (inputLen>MAX_RSA_MODULUS_LEN) return (RE_LEN);
|
|
+ if (publicKey->bits > MAX_RSA_MODULUS_BITS) return (RE_LEN);
|
|
+
|
|
modulusLen = (publicKey->bits + 7) / 8;
|
|
if (inputLen > modulusLen)
|
|
return (RE_LEN);
|
|
@@ -129,6 +135,9 @@
|
|
unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];
|
|
unsigned int i, modulusLen;
|
|
|
|
+ if (inputLen+3>MAX_RSA_MODULUS_LEN) return (RE_LEN);
|
|
+ if (privateKey->bits > MAX_RSA_MODULUS_BITS) return (RE_LEN);
|
|
+
|
|
modulusLen = (privateKey->bits + 7) / 8;
|
|
if (inputLen + 11 > modulusLen)
|
|
return (RE_LEN);
|
|
@@ -168,6 +177,9 @@
|
|
unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];
|
|
unsigned int i, modulusLen, pkcsBlockLen;
|
|
|
|
+ if (inputLen>MAX_RSA_MODULUS_LEN) return (RE_LEN);
|
|
+ if (privateKey->bits > MAX_RSA_MODULUS_BITS) return (RE_LEN);
|
|
+
|
|
modulusLen = (privateKey->bits + 7) / 8;
|
|
if (inputLen > modulusLen)
|
|
return (RE_LEN);
|
|
@@ -212,7 +224,7 @@
|
|
Assumes inputLen < length of modulus.
|
|
Requires input < modulus.
|
|
*/
|
|
-static int RSAPublicBlock (output, outputLen, input, inputLen, publicKey)
|
|
+int RSAPublicBlock (output, outputLen, input, inputLen, publicKey)
|
|
unsigned char *output; /* output block */
|
|
unsigned int *outputLen; /* length of output block */
|
|
unsigned char *input; /* input block */
|
|
@@ -252,7 +264,7 @@
|
|
Assumes inputLen < length of modulus.
|
|
Requires input < modulus.
|
|
*/
|
|
-static int RSAPrivateBlock (output, outputLen, input, inputLen, privateKey)
|
|
+int RSAPrivateBlock (output, outputLen, input, inputLen, privateKey)
|
|
unsigned char *output; /* output block */
|
|
unsigned int *outputLen; /* length of output block */
|
|
unsigned char *input; /* input block */
|