crypto/dsa/dsa_ossl.c:142: error: BUFFER_OVERRUN_L3
  Offset: [-1, 5] Size: 12 by call to `BN_mod_mul`.
Showing all 26 steps of the trace


crypto/dsa/dsa_ossl.c:120:6: Call
118.   		}
119.   
120.   	ctx=BN_CTX_new();
            ^
121.   	if (ctx == NULL) goto err;
122.   

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/dsa/dsa_ossl.c:138:7: Call
136.   
137.   	/* Compute  s = inv(k) (m + xr) mod q */
138.   	if (!BN_mod_mul(&xr,dsa->priv_key,r,dsa->q,ctx)) goto err;/* s = xr */
             ^
139.   	if (!BN_add(s, &xr, &m)) goto err;		/* s = m + xr */
140.   	if (BN_cmp(s,dsa->q) > 0)

crypto/bn/bn_exp.c:66:1: Parameter `ctx->depth`
  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:2: Call
  73.   	bn_check_top(m);
  74.   
  75.   	BN_CTX_start(ctx);
         ^
  76.   	if ((t = BN_CTX_get(ctx)) == NULL) goto err;
  77.   	if (a == b)

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_exp.c:76:11: Call
  74.   
  75.   	BN_CTX_start(ctx);
  76.   	if ((t = BN_CTX_get(ctx)) == NULL) goto err;
                  ^
  77.   	if (a == b)
  78.   		{ if (!BN_sqr(t,a,ctx)) goto err; }

crypto/bn/bn_ctx.c:115:1: Parameter `ctx->depth`
    113.   	}
    114.   
    115. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
    116.   	{
    117.   	if (ctx->depth > BN_CTX_NUM_POS || ctx->tos >= BN_CTX_NUM)

crypto/bn/bn_exp.c:84:2: Call
  82.   	r=1;
  83.   err:
  84.   	BN_CTX_end(ctx);
         ^
  85.   	return(r);
  86.   	}

crypto/bn/bn_ctx.c:130:1: Parameter `ctx->depth`
    128.   	}
    129.   
    130. > void BN_CTX_end(BN_CTX *ctx)
    131.   	{
    132.   	if (ctx == NULL) return;

crypto/dsa/dsa_ossl.c:142:7: Call
140.   	if (BN_cmp(s,dsa->q) > 0)
141.   		BN_sub(s,s,dsa->q);
142.   	if (!BN_mod_mul(s,s,kinv,dsa->q,ctx)) goto err;
             ^
143.   
144.   	ret=DSA_SIG_new();

crypto/bn/bn_exp.c:66:1: Parameter `ctx->depth`
  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:2: Call
  73.   	bn_check_top(m);
  74.   
  75.   	BN_CTX_start(ctx);
         ^
  76.   	if ((t = BN_CTX_get(ctx)) == NULL) goto err;
  77.   	if (a == b)

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_exp.c:76:11: Call
  74.   
  75.   	BN_CTX_start(ctx);
  76.   	if ((t = BN_CTX_get(ctx)) == NULL) goto err;
                  ^
  77.   	if (a == b)
  78.   		{ if (!BN_sqr(t,a,ctx)) goto err; }

crypto/bn/bn_ctx.c:115:1: Parameter `ctx->depth`
    113.   	}
    114.   
    115. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
    116.   	{
    117.   	if (ctx->depth > BN_CTX_NUM_POS || ctx->tos >= BN_CTX_NUM)

crypto/bn/bn_exp.c:84:2: Call
  82.   	r=1;
  83.   err:
  84.   	BN_CTX_end(ctx);
         ^
  85.   	return(r);
  86.   	}

crypto/bn/bn_ctx.c:130:1: <Offset trace>
128.   	}
129.   
130. > void BN_CTX_end(BN_CTX *ctx)
131.   	{
132.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:130:1: Parameter `ctx->depth`
    128.   	}
    129.   
    130. > void BN_CTX_end(BN_CTX *ctx)
    131.   	{
    132.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:141:2: Assignment
    139.   
    140.   	ctx->too_many = 0;
    141.   	ctx->depth--;
            ^
    142.   	if (ctx->depth < BN_CTX_NUM_POS)
    143.   		ctx->tos = ctx->pos[ctx->depth];

crypto/bn/bn_ctx.c:130:1: <Length trace>
128.   	}
129.   
130. > void BN_CTX_end(BN_CTX *ctx)
131.   	{
132.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:130:1: Parameter `ctx->pos[*]`
    128.   	}
    129.   
    130. > void BN_CTX_end(BN_CTX *ctx)
    131.   	{
    132.   	if (ctx == NULL) return;

crypto/bn/bn_ctx.c:143:14: Array access: Offset: [-1, 5] Size: 12 by call to `BN_mod_mul` 
    141.   	ctx->depth--;
    142.   	if (ctx->depth < BN_CTX_NUM_POS)
    143.   		ctx->tos = ctx->pos[ctx->depth];
                        ^
    144.   	}
