crypto/rsa/rsa_chk.c:122: error: BUFFER_OVERRUN_L3
  Offset: [-1, +oo] Size: 13 by call to `BN_mod_mul`.
Showing all 16 steps of the trace


crypto/rsa/rsa_chk.c:68:8: Call
66.   	l = BN_new();
67.   	m = BN_new();
68.   	ctx = BN_CTX_new();
             ^
69.   	if (i == NULL || j == NULL || k == NULL || l == NULL ||
70.   		m == NULL || ctx == NULL)

crypto/bn/bn_lib.c:319:2: Call
  317.   		}
  318.   
  319.   	BN_CTX_init(ret);
          ^
  320.   	ret->flags=BN_FLG_MALLOCED;
  321.   	return(ret);

crypto/bn/bn_lib.c:327:2: Assignment
    325.   	{
    326.   	memset(ctx,0,sizeof(BN_CTX));
    327.   	ctx->tos=0;
            ^
    328.   	ctx->flags=0;
    329.   	}

crypto/rsa/rsa_chk.c:78:6: Call
76.   	
77.   	/* p prime? */
78.   	r = BN_is_prime(key->p, BN_prime_checks, NULL, NULL, NULL);
           ^
79.   	if (r != 1)
80.   		{

crypto/bn/bn_prime.c:154:1: Parameter `ctx_passed->tos`
  152.   	}
  153.   
  154. > int BN_is_prime(BIGNUM *a, int checks, void (*callback)(int,int,void *),
  155.   	     BN_CTX *ctx_passed, void *cb_arg)
  156.   	{

crypto/rsa/rsa_chk.c:88:6: Call
86.   	
87.   	/* q prime? */
88.   	r = BN_is_prime(key->q, BN_prime_checks, NULL, NULL, NULL);
           ^
89.   	if (r != 1)
90.   		{

crypto/bn/bn_prime.c:154:1: Parameter `ctx_passed->tos`
  152.   	}
  153.   
  154. > int BN_is_prime(BIGNUM *a, int checks, void (*callback)(int,int,void *),
  155.   	     BN_CTX *ctx_passed, void *cb_arg)
  156.   	{

crypto/rsa/rsa_chk.c:122:6: Call
120.   	if (!r) { ret = -1; goto err; }
121.   
122.   	r = BN_mod_mul(i, key->d, key->e, k, ctx);
            ^
123.   	if (!r) { ret = -1; goto err; }
124.   

crypto/bn/bn_exp.c:66:1: Parameter `ctx->tos`
  64.   
  65.   /* slow but works */
  66. > int BN_mod_mul(BIGNUM *ret, BIGNUM *a, BIGNUM *b, const BIGNUM *m, BN_CTX *ctx)
  67.   	{
  68.   	BIGNUM *t;

crypto/bn/bn_exp.c:75:15: Assignment
  73.   	bn_check_top(m);
  74.   
  75.   	t= &(ctx->bn[ctx->tos++]);
                      ^
  76.   	if (a == b)
  77.   		{ if (!BN_sqr(t,a,ctx)) goto err; }

crypto/bn/bn_exp.c:77:10: Call
  75.   	t= &(ctx->bn[ctx->tos++]);
  76.   	if (a == b)
  77.   		{ if (!BN_sqr(t,a,ctx)) goto err; }
                 ^
  78.   	else
  79.   		{ if (!BN_mul(t,a,b,ctx)) goto err; }

crypto/bn/bn_sqr.c:65:1: <Offset trace>
63.   /* r must not be a */
64.   /* I've just gone over this and it is now %20 faster on x86 - eay - 27 Jun 96 */
65. > int BN_sqr(BIGNUM *r, BIGNUM *a, BN_CTX *ctx)
66.   	{
67.   	int max,al;

crypto/bn/bn_sqr.c:65:1: Parameter `ctx->tos`
    63.   /* r must not be a */
    64.   /* I've just gone over this and it is now %20 faster on x86 - eay - 27 Jun 96 */
    65. > int BN_sqr(BIGNUM *r, BIGNUM *a, BN_CTX *ctx)
    66.   	{
    67.   	int max,al;

crypto/bn/bn_sqr.c:65:1: <Length trace>
63.   /* r must not be a */
64.   /* I've just gone over this and it is now %20 faster on x86 - eay - 27 Jun 96 */
65. > int BN_sqr(BIGNUM *r, BIGNUM *a, BN_CTX *ctx)
66.   	{
67.   	int max,al;

crypto/bn/bn_sqr.c:65:1: Parameter `ctx->bn[*]`
    63.   /* r must not be a */
    64.   /* I've just gone over this and it is now %20 faster on x86 - eay - 27 Jun 96 */
    65. > int BN_sqr(BIGNUM *r, BIGNUM *a, BN_CTX *ctx)
    66.   	{
    67.   	int max,al;

crypto/bn/bn_sqr.c:74:2: Array access: Offset: [-1, +oo] Size: 13 by call to `BN_mod_mul` 
    72.   #endif
    73.   	bn_check_top(a);
    74.   	tmp= &(ctx->bn[ctx->tos]);
           ^
    75.   	rr=(a != r)?r: (&ctx->bn[ctx->tos+1]);
    76.   
