crypto/ec/ec_lib.c:336: error: BUFFER_OVERRUN_L3
  Offset: 0 Size: [0, 8388607] by call to `BN_is_odd`.
Showing all 6 steps of the trace


crypto/ec/ec_lib.c:319:14: Call
317.   
318.       if (order != NULL) {
319.           if (!BN_copy(group->order, order))
                    ^
320.               return 0;
321.       } else

crypto/bn/bn_lib.c:419:1: Parameter `*a->d`
  417.   }
  418.   
  419. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
  420.   {
  421.       int i;

crypto/ec/ec_lib.c:336:9: Call
334.        * |group->mont_data| will be NULL in this case.
335.        */
336.       if (BN_is_odd(group->order)) {
               ^
337.           return ec_precompute_mont_data(group);
338.       }

crypto/bn/bn_lib.c:990:1: <Length trace>
988.   }
989.   
990. > int BN_is_odd(const BIGNUM *a)
991.   {
992.       return (a->top > 0) && (a->d[0] & 1);

crypto/bn/bn_lib.c:990:1: Parameter `*a->d`
  988.   }
  989.   
  990. > int BN_is_odd(const BIGNUM *a)
  991.   {
  992.       return (a->top > 0) && (a->d[0] & 1);

crypto/bn/bn_lib.c:992:29: Array access: Offset: 0 Size: [0, 8388607] by call to `BN_is_odd` 
  990.   int BN_is_odd(const BIGNUM *a)
  991.   {
  992.       return (a->top > 0) && (a->d[0] & 1);
                                     ^
  993.   }
  994.   

int BN_is_odd(const BIGNUM *a)
{
    return (a->top > 0) && (a->d[0] & 1);
}
['int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator,\n                           const BIGNUM *order, const BIGNUM *cofactor)\n{\n    if (generator == NULL) {\n        ECerr(EC_F_EC_GROUP_SET_GENERATOR, ERR_R_PASSED_NULL_PARAMETER);\n        return 0;\n    }\n    if (group->generator == NULL) {\n        group->generator = EC_POINT_new(group);\n        if (group->generator == NULL)\n            return 0;\n    }\n    if (!EC_POINT_copy(group->generator, generator))\n        return 0;\n    if (order != NULL) {\n        if (!BN_copy(group->order, order))\n            return 0;\n    } else\n        BN_zero(group->order);\n    if (cofactor != NULL) {\n        if (!BN_copy(group->cofactor, cofactor))\n            return 0;\n    } else\n        BN_zero(group->cofactor);\n    if (BN_is_odd(group->order)) {\n        return ec_precompute_mont_data(group);\n    }\n    BN_MONT_CTX_free(group->mont_data);\n    group->mont_data = NULL;\n    return 1;\n}', 'BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)\n{\n    int i;\n    BN_ULONG *A;\n    const BN_ULONG *B;\n    bn_check_top(b);\n    if (a == b)\n        return (a);\n    if (bn_wexpand(a, b->top) == NULL)\n        return (NULL);\n#if 1\n    A = a->d;\n    B = b->d;\n    for (i = b->top >> 2; i > 0; i--, A += 4, B += 4) {\n        BN_ULONG a0, a1, a2, a3;\n        a0 = B[0];\n        a1 = B[1];\n        a2 = B[2];\n        a3 = B[3];\n        A[0] = a0;\n        A[1] = a1;\n        A[2] = a2;\n        A[3] = a3;\n    }\n    switch (b->top & 3) {\n    case 3:\n        A[2] = B[2];\n    case 2:\n        A[1] = B[1];\n    case 1:\n        A[0] = B[0];\n    case 0:;\n    }\n#else\n    memcpy(a->d, b->d, sizeof(b->d[0]) * b->top);\n#endif\n    a->top = b->top;\n    a->neg = b->neg;\n    bn_check_top(a);\n    return (a);\n}', 'int BN_is_odd(const BIGNUM *a)\n{\n    return (a->top > 0) && (a->d[0] & 1);\n}']