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


test/ectest.c:252:10: Call
250.           ABORT;
251.   
252.       if (!BN_hex2bn(&p, "17"))
                ^
253.           ABORT;
254.       if (!BN_hex2bn(&a, "1"))

crypto/bn/bn_print.c:172:1: Parameter `(*bn)->top`
  170.   }
  171.   
  172. > int BN_hex2bn(BIGNUM **bn, const char *a)
  173.   {
  174.       BIGNUM *ret = NULL;

test/ectest.c:320:10: Call
318.       if (!BN_hex2bn(&x, "D"))
319.           ABORT;
320.       if (!EC_POINT_set_compressed_coordinates_GFp(group, Q, x, 1, ctx))
                ^
321.           ABORT;
322.       if (EC_POINT_is_on_curve(group, Q, ctx) <= 0) {

crypto/ec/ec_oct.c:71:1: Parameter `x->top`
  69.   #include "ec_lcl.h"
  70.   
  71. > int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group,
  72.                                               EC_POINT *point, const BIGNUM *x,
  73.                                               int y_bit, BN_CTX *ctx)

crypto/ec/ec_oct.c:88:20: Call
  86.       if (group->meth->flags & EC_FLAGS_DEFAULT_OCT) {
  87.           if (group->meth->field_type == NID_X9_62_prime_field)
  88.               return ec_GFp_simple_set_compressed_coordinates(group, point, x,
                           ^
  89.                                                               y_bit, ctx);
  90.           else

crypto/ec/ecp_oct.c:92:12: Call
    90.   
    91.       BN_CTX_start(ctx);
    92.       tmp1 = BN_CTX_get(ctx);
                     ^
    93.       tmp2 = BN_CTX_get(ctx);
    94.       x = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:284:5: Call
      282.       }
      283.       /* OK, make sure the returned bignum is "zero" */
      284.       BN_zero(ret);
                 ^
      285.       ctx->used++;
      286.       CTXDBG_RET(ctx, ret);

crypto/bn/bn_lib.c:530:1: Parameter `*a->d`
        528.   }
        529.   
        530. > int BN_set_word(BIGNUM *a, BN_ULONG w)
        531.   {
        532.       bn_check_top(a);

crypto/ec/ecp_oct.c:115:14: Call
    113.               goto err;
    114.       } else {
    115.           if (!BN_mod_sqr(tmp2, x_, group->field, ctx))
                        ^
    116.               goto err;
    117.           if (!BN_mod_mul(tmp1, tmp2, x_, group->field, ctx))

crypto/bn/bn_mod.c:208:1: Parameter `*r->d`
      206.   }
      207.   
      208. > int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
      209.   {
      210.       if (!BN_sqr(r, a, ctx))

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

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

crypto/bn/bn_sqr.c:74:5: Assignment
        72.       bn_check_top(a);
        73.   
        74.       al = a->top;
                  ^
        75.       if (al <= 0) {
        76.           r->top = 0;

crypto/bn/bn_sqr.c:123:17: Call
        121.                   if (bn_wexpand(tmp, max) == NULL)
        122.                       goto err;
        123.                   bn_sqr_normal(rr->d, a->d, al, tmp->d);
                               ^
        124.               }
        125.           }

crypto/bn/bn_sqr.c:153:1: <Offset trace>
151.   
152.   /* tmp must have 2*n words */
153. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
154.   {
155.       int i, j, max;

crypto/bn/bn_sqr.c:153:1: Parameter `n`
          151.   
          152.   /* tmp must have 2*n words */
          153. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
          154.   {
          155.       int i, j, max;

crypto/bn/bn_sqr.c:164:5: Assignment
          162.       rp[0] = rp[max - 1] = 0;
          163.       rp++;
          164.       j = n;
                     ^
          165.   
          166.       if (--j > 0) {

crypto/bn/bn_sqr.c:166:9: Assignment
          164.       j = n;
          165.   
          166.       if (--j > 0) {
                         ^
          167.           ap++;
          168.           rp[j] = bn_mul_words(rp, ap, j, ap[-1]);

crypto/bn/bn_sqr.c:153:1: <Length trace>
151.   
152.   /* tmp must have 2*n words */
153. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
154.   {
155.       int i, j, max;

crypto/bn/bn_sqr.c:153:1: Parameter `*r`
          151.   
          152.   /* tmp must have 2*n words */
          153. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
          154.   {
          155.       int i, j, max;

crypto/bn/bn_sqr.c:161:5: Assignment
          159.       max = n * 2;
          160.       ap = a;
          161.       rp = r;
                     ^
          162.       rp[0] = rp[max - 1] = 0;
          163.       rp++;

crypto/bn/bn_sqr.c:163:5: Assignment
          161.       rp = r;
          162.       rp[0] = rp[max - 1] = 0;
          163.       rp++;
                     ^
          164.       j = n;
          165.   

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