test/ectest.c:288: error: BUFFER_OVERRUN_L3
  Offset: [16, +oo] (⇐ 1 + [15, +oo]) Size: [0, 8388607] by call to `EC_POINT_set_compressed_coordinates_GFp`.
Showing all 25 steps of the trace


test/ectest.c:219:10: Call
217.           ABORT;
218.   
219.       if (!BN_hex2bn(&p, "17"))
                ^
220.           ABORT;
221.       if (!BN_hex2bn(&a, "1"))

crypto/bn/bn_print.c:124:1: Parameter `(*bn)->top`
  122.   }
  123.   
  124. > int BN_hex2bn(BIGNUM **bn, const char *a)
  125.   {
  126.       BIGNUM *ret = NULL;

test/ectest.c:288:10: Call
286.       if (!BN_hex2bn(&x, "D"))
287.           ABORT;
288.       if (!EC_POINT_set_compressed_coordinates_GFp(group, Q, x, 1, ctx))
                ^
289.           ABORT;
290.       if (EC_POINT_is_on_curve(group, Q, ctx) <= 0) {

crypto/ec/ec_oct.c:23:1: Parameter `x->top`
  21.   #include "ec_lcl.h"
  22.   
  23. > int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group,
  24.                                               EC_POINT *point, const BIGNUM *x,
  25.                                               int y_bit, BN_CTX *ctx)

crypto/ec/ec_oct.c:40:20: Call
  38.       if (group->meth->flags & EC_FLAGS_DEFAULT_OCT) {
  39.           if (group->meth->field_type == NID_X9_62_prime_field)
  40.               return ec_GFp_simple_set_compressed_coordinates(group, point, x,
                           ^
  41.                                                               y_bit, ctx);
  42.           else

crypto/ec/ecp_oct.c:42:12: Call
    40.   
    41.       BN_CTX_start(ctx);
    42.       tmp1 = BN_CTX_get(ctx);
                     ^
    43.       tmp2 = BN_CTX_get(ctx);
    44.       x = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:229:5: Call
      227.       }
      228.       /* OK, make sure the returned bignum is "zero" */
      229.       BN_zero(ret);
                 ^
      230.       ctx->used++;
      231.       CTXDBG_RET(ctx, ret);

crypto/bn/bn_lib.c:463:1: Parameter `*a->d`
        461.   }
        462.   
        463. > int BN_set_word(BIGNUM *a, BN_ULONG w)
        464.   {
        465.       bn_check_top(a);

crypto/bn/bn_lib.c:466:9: Call
        464.   {
        465.       bn_check_top(a);
        466.       if (bn_expand(a, (int)sizeof(BN_ULONG) * 8) == NULL)
                       ^
        467.           return (0);
        468.       a->neg = 0;

crypto/bn/bn_lcl.h:676:1: Parameter `*a->d`
          674.   int bn_probable_prime_dh_coprime(BIGNUM *rnd, int bits, BN_CTX *ctx);
          675.   
          676. > static ossl_inline BIGNUM *bn_expand(BIGNUM *a, int bits)
          677.   {
          678.       if (bits > (INT_MAX - BN_BITS2 + 1))

crypto/ec/ecp_oct.c:65:14: Call
    63.               goto err;
    64.       } else {
    65.           if (!BN_mod_sqr(tmp2, x_, group->field, ctx))
                       ^
    66.               goto err;
    67.           if (!BN_mod_mul(tmp1, tmp2, x_, group->field, ctx))

crypto/bn/bn_mod.c:102:1: Parameter `*r->d`
      100.   }
      101.   
      102. > int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
      103.   {
      104.       if (!BN_sqr(r, a, ctx))

crypto/bn/bn_mod.c:104:10: Call
      102.   int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
      103.   {
      104.       if (!BN_sqr(r, a, ctx))
                      ^
      105.           return 0;
      106.       /* r->neg == 0,  thus we don't need BN_nnmod */

crypto/bn/bn_sqr.c:17:1: Parameter `a->top`
        15.    * I've just gone over this and it is now %20 faster on x86 - eay - 27 Jun 96
        16.    */
        17. > int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx)
        18.   {
        19.       int max, al;

crypto/bn/bn_sqr.c:25:5: Assignment
        23.       bn_check_top(a);
        24.   
        25.       al = a->top;
                  ^
        26.       if (al <= 0) {
        27.           r->top = 0;

crypto/bn/bn_sqr.c:74:17: Call
        72.                   if (bn_wexpand(tmp, max) == NULL)
        73.                       goto err;
        74.                   bn_sqr_normal(rr->d, a->d, al, tmp->d);
                              ^
        75.               }
        76.           }

crypto/bn/bn_sqr.c:104:1: <Offset trace>
102.   
103.   /* tmp must have 2*n words */
104. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
105.   {
106.       int i, j, max;

crypto/bn/bn_sqr.c:104:1: Parameter `n`
          102.   
          103.   /* tmp must have 2*n words */
          104. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
          105.   {
          106.       int i, j, max;

crypto/bn/bn_sqr.c:115:5: Assignment
          113.       rp[0] = rp[max - 1] = 0;
          114.       rp++;
          115.       j = n;
                     ^
          116.   
          117.       if (--j > 0) {

crypto/bn/bn_sqr.c:117:9: Assignment
          115.       j = n;
          116.   
          117.       if (--j > 0) {
                         ^
          118.           ap++;
          119.           rp[j] = bn_mul_words(rp, ap, j, ap[-1]);

crypto/bn/bn_sqr.c:104:1: <Length trace>
102.   
103.   /* tmp must have 2*n words */
104. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
105.   {
106.       int i, j, max;

crypto/bn/bn_sqr.c:104:1: Parameter `*r`
          102.   
          103.   /* tmp must have 2*n words */
          104. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
          105.   {
          106.       int i, j, max;

crypto/bn/bn_sqr.c:112:5: Assignment
          110.       max = n * 2;
          111.       ap = a;
          112.       rp = r;
                     ^
          113.       rp[0] = rp[max - 1] = 0;
          114.       rp++;

crypto/bn/bn_sqr.c:114:5: Assignment
          112.       rp = r;
          113.       rp[0] = rp[max - 1] = 0;
          114.       rp++;
                     ^
          115.       j = n;
          116.   

crypto/bn/bn_sqr.c:119:9: Array access: Offset: [16, +oo] (⇐ 1 + [15, +oo]) Size: [0, 8388607] by call to `EC_POINT_set_compressed_coordinates_GFp` 
          117.       if (--j > 0) {
          118.           ap++;
          119.           rp[j] = bn_mul_words(rp, ap, j, ap[-1]);
                         ^
          120.           rp += 2;
          121.       }
