crypto/rsa/rsa_eay.c:662: error: BUFFER_OVERRUN_L2
  Offset: [min(-2, `ctx->depth`), 21+max(-3, `ctx->depth`)] Size: 12 by call to `BN_CTX_end`.
Showing all 19 steps of the trace


crypto/rsa/rsa_eay.c:600:1: Parameter `ctx->depth`
598.   	}
599.   
600. > static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
601.   	{
602.   	BIGNUM *r1,*m1,*vrfy;

crypto/rsa/rsa_eay.c:605:2: Call
603.   	int ret=0;
604.   
605.   	BN_CTX_start(ctx);
        ^
606.   	r1 = BN_CTX_get(ctx);
607.   	m1 = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:133:1: Parameter `ctx->depth`
  131.   	}
  132.   
  133. > void BN_CTX_start(BN_CTX *ctx)
  134.   	{
  135.   	if (ctx->depth < BN_CTX_NUM_POS)

crypto/bn/bn_ctx.c:137:2: Assignment
  135.   	if (ctx->depth < BN_CTX_NUM_POS)
  136.   		ctx->pos[ctx->depth] = ctx->tos;
  137.   	ctx->depth++;
          ^
  138.   	}
  139.   

crypto/rsa/rsa_eay.c:606:7: Call
604.   
605.   	BN_CTX_start(ctx);
606.   	r1 = BN_CTX_get(ctx);
             ^
607.   	m1 = BN_CTX_get(ctx);
608.   	vrfy = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:141:1: Parameter `ctx->depth`
  139.   
  140.   
  141. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
  142.   	{
  143.   	BIGNUM *ret;

crypto/rsa/rsa_eay.c:607:7: Call
605.   	BN_CTX_start(ctx);
606.   	r1 = BN_CTX_get(ctx);
607.   	m1 = BN_CTX_get(ctx);
             ^
608.   	vrfy = BN_CTX_get(ctx);
609.   

crypto/bn/bn_ctx.c:141:1: Parameter `ctx->depth`
  139.   
  140.   
  141. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
  142.   	{
  143.   	BIGNUM *ret;

crypto/rsa/rsa_eay.c:608:9: Call
606.   	r1 = BN_CTX_get(ctx);
607.   	m1 = BN_CTX_get(ctx);
608.   	vrfy = BN_CTX_get(ctx);
               ^
609.   
610.   	MONT_HELPER(rsa, ctx, p, rsa->flags & RSA_FLAG_CACHE_PRIVATE, goto err);

crypto/bn/bn_ctx.c:141:1: Parameter `ctx->depth`
  139.   
  140.   
  141. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
  142.   	{
  143.   	BIGNUM *ret;

crypto/rsa/rsa_eay.c:610:2: Call
608.   	vrfy = BN_CTX_get(ctx);
609.   
610.   	MONT_HELPER(rsa, ctx, p, rsa->flags & RSA_FLAG_CACHE_PRIVATE, goto err);
        ^
611.   	MONT_HELPER(rsa, ctx, q, rsa->flags & RSA_FLAG_CACHE_PRIVATE, goto err);
612.   	MONT_HELPER(rsa, ctx, n, rsa->flags & RSA_FLAG_CACHE_PUBLIC, goto err);

crypto/rsa/rsa_eay.c:104:1: Parameter `ctx->depth`
  102.    * function, to prevent unnecessary function calls - there is an initial test
  103.    * that is performed by the macro-generated code. */
  104. > static int rsa_eay_mont_helper(BN_MONT_CTX **ptr, const BIGNUM *modulus, BN_CTX *ctx)
  105.   	{
  106.   	BN_MONT_CTX *bn_mont_ctx;

crypto/rsa/rsa_eay.c:662:2: Call
660.   	ret=1;
661.   err:
662.   	BN_CTX_end(ctx);
        ^
663.   	return(ret);
664.   	}

crypto/bn/bn_ctx.c:165:1: <Offset trace>
163.   	}
164.   
165. > void BN_CTX_end(BN_CTX *ctx)
166.   	{
167.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:165:1: Parameter `ctx->depth`
  163.   	}
  164.   
  165. > void BN_CTX_end(BN_CTX *ctx)
  166.   	{
  167.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:176:2: Assignment
  174.   
  175.   	ctx->too_many = 0;
  176.   	ctx->depth--;
          ^
  177.   	if (ctx->depth < BN_CTX_NUM_POS)
  178.   #ifndef BN_DEBUG

crypto/bn/bn_ctx.c:165:1: <Length trace>
163.   	}
164.   
165. > void BN_CTX_end(BN_CTX *ctx)
166.   	{
167.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:165:1: Parameter `ctx->pos[*]`
  163.   	}
  164.   
  165. > void BN_CTX_end(BN_CTX *ctx)
  166.   	{
  167.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:179:14: Array access: Offset: [min(-2, ctx->depth), 21+max(-3, ctx->depth)] Size: 12 by call to `BN_CTX_end` 
  177.   	if (ctx->depth < BN_CTX_NUM_POS)
  178.   #ifndef BN_DEBUG
  179.   		ctx->tos = ctx->pos[ctx->depth];
                      ^
  180.   #else
  181.   		while(ctx->tos > ctx->pos[ctx->depth])
