crypto/rsa/rsa_eay.c:145: error: BUFFER_OVERRUN_L3
  Offset: [-1, +oo] Size: 12 by call to `BN_MONT_CTX_set`.
Showing all 31 steps of the trace


crypto/rsa/rsa_eay.c:110:11: Call
108.   	BN_init(&f);
109.   	BN_init(&ret);
110.   	if ((ctx=BN_CTX_new()) == NULL) goto err;
                 ^
111.   	num=BN_num_bytes(rsa->n);
112.   	if ((buf=(unsigned char *)OPENSSL_malloc(num)) == NULL)

crypto/bn/bn_ctx.c:79:2: Call
  77.   		}
  78.   
  79.   	BN_CTX_init(ret);
         ^
  80.   	ret->flags=BN_FLG_MALLOCED;
  81.   	return(ret);

crypto/bn/bn_ctx.c:89:2: Assignment
    87.   	ctx->tos = 0;
    88.   	ctx->flags = 0;
    89.   	ctx->depth = 0;
           ^
    90.   	ctx->too_many = 0;
    91.   	for (i = 0; i < BN_CTX_NUM; i++)

crypto/rsa/rsa_eay.c:145:9: Call
143.   		{
144.   		if ((rsa->_method_mod_n=BN_MONT_CTX_new()) != NULL)
145.   			if (!BN_MONT_CTX_set(rsa->_method_mod_n,rsa->n,ctx))
               ^
146.   			    goto err;
147.   		}

crypto/bn/bn_mont.c:270:1: Parameter `ctx->depth`
  268.   	}
  269.   
  270. > int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
  271.   	{
  272.   	BIGNUM Ri,*R;

crypto/bn/bn_mont.c:295:8: Call
  293.   		tmod.neg=0;
  294.   							/* Ri = R^-1 mod N*/
  295.   		if ((BN_mod_inverse(&Ri,R,&tmod,ctx)) == NULL)
                ^
  296.   			goto err;
  297.   		if (!BN_lshift(&Ri,&Ri,BN_BITS2)) goto err; /* R*Ri */

crypto/bn/bn_gcd.c:204:1: Parameter `ctx->depth`
    202.   
    203.   /* solves ax == 1 (mod n) */
    204. > BIGNUM *BN_mod_inverse(BIGNUM *in,
    205.   	const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx)
    206.   	{

crypto/bn/bn_gcd.c:214:2: Call
    212.   	bn_check_top(n);
    213.   
    214.   	BN_CTX_start(ctx);
            ^
    215.   	A = BN_CTX_get(ctx);
    216.   	B = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:108:1: Parameter `ctx->depth`
      106.   	}
      107.   
      108. > void BN_CTX_start(BN_CTX *ctx)
      109.   	{
      110.   	if (ctx->depth < BN_CTX_NUM_POS)

crypto/bn/bn_ctx.c:112:2: Assignment
      110.   	if (ctx->depth < BN_CTX_NUM_POS)
      111.   		ctx->pos[ctx->depth] = ctx->tos;
      112.   	ctx->depth++;
              ^
      113.   	}
      114.   

crypto/bn/bn_gcd.c:215:6: Call
    213.   
    214.   	BN_CTX_start(ctx);
    215.   	A = BN_CTX_get(ctx);
                ^
    216.   	B = BN_CTX_get(ctx);
    217.   	X = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:116:1: Parameter `ctx->depth`
      114.   
      115.   
      116. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      117.   	{
      118.   	/* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically,

crypto/bn/bn_gcd.c:216:6: Call
    214.   	BN_CTX_start(ctx);
    215.   	A = BN_CTX_get(ctx);
    216.   	B = BN_CTX_get(ctx);
                ^
    217.   	X = BN_CTX_get(ctx);
    218.   	D = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:116:1: Parameter `ctx->depth`
      114.   
      115.   
      116. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      117.   	{
      118.   	/* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically,

crypto/bn/bn_gcd.c:217:6: Call
    215.   	A = BN_CTX_get(ctx);
    216.   	B = BN_CTX_get(ctx);
    217.   	X = BN_CTX_get(ctx);
                ^
    218.   	D = BN_CTX_get(ctx);
    219.   	M = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:116:1: Parameter `ctx->depth`
      114.   
      115.   
      116. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      117.   	{
      118.   	/* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically,

crypto/bn/bn_gcd.c:218:6: Call
    216.   	B = BN_CTX_get(ctx);
    217.   	X = BN_CTX_get(ctx);
    218.   	D = BN_CTX_get(ctx);
                ^
    219.   	M = BN_CTX_get(ctx);
    220.   	Y = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:116:1: Parameter `ctx->depth`
      114.   
      115.   
      116. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      117.   	{
      118.   	/* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically,

crypto/bn/bn_gcd.c:219:6: Call
    217.   	X = BN_CTX_get(ctx);
    218.   	D = BN_CTX_get(ctx);
    219.   	M = BN_CTX_get(ctx);
                ^
    220.   	Y = BN_CTX_get(ctx);
    221.   	T = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:116:1: Parameter `ctx->depth`
      114.   
      115.   
      116. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      117.   	{
      118.   	/* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically,

crypto/bn/bn_gcd.c:220:6: Call
    218.   	D = BN_CTX_get(ctx);
    219.   	M = BN_CTX_get(ctx);
    220.   	Y = BN_CTX_get(ctx);
                ^
    221.   	T = BN_CTX_get(ctx);
    222.   	if (T == NULL) goto err;

crypto/bn/bn_ctx.c:116:1: Parameter `ctx->depth`
      114.   
      115.   
      116. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      117.   	{
      118.   	/* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically,

crypto/bn/bn_gcd.c:221:6: Call
    219.   	M = BN_CTX_get(ctx);
    220.   	Y = BN_CTX_get(ctx);
    221.   	T = BN_CTX_get(ctx);
                ^
    222.   	if (T == NULL) goto err;
    223.   

crypto/bn/bn_ctx.c:116:1: Parameter `ctx->depth`
      114.   
      115.   
      116. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      117.   	{
      118.   	/* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically,

crypto/bn/bn_gcd.c:398:2: Call
    396.   err:
    397.   	if ((ret == NULL) && (in == NULL)) BN_free(R);
    398.   	BN_CTX_end(ctx);
            ^
    399.   	return(ret);
    400.   	}

crypto/bn/bn_ctx.c:136:1: <Offset trace>
134.   	}
135.   
136. > void BN_CTX_end(BN_CTX *ctx)
137.   	{
138.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:136:1: Parameter `ctx->depth`
      134.   	}
      135.   
      136. > void BN_CTX_end(BN_CTX *ctx)
      137.   	{
      138.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:147:2: Assignment
      145.   
      146.   	ctx->too_many = 0;
      147.   	ctx->depth--;
              ^
      148.   	if (ctx->depth < BN_CTX_NUM_POS)
      149.   		ctx->tos = ctx->pos[ctx->depth];

crypto/bn/bn_ctx.c:136:1: <Length trace>
134.   	}
135.   
136. > void BN_CTX_end(BN_CTX *ctx)
137.   	{
138.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:136:1: Parameter `ctx->pos[*]`
      134.   	}
      135.   
      136. > void BN_CTX_end(BN_CTX *ctx)
      137.   	{
      138.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:149:14: Array access: Offset: [-1, +oo] Size: 12 by call to `BN_MONT_CTX_set` 
      147.   	ctx->depth--;
      148.   	if (ctx->depth < BN_CTX_NUM_POS)
      149.   		ctx->tos = ctx->pos[ctx->depth];
                          ^
      150.   	}
