crypto/err/err.c:307: error: BUFFER_OVERRUN_L3
  Offset: [16, +oo] Size: [1, +oo] by call to `lh_ERR_STRING_DATA_insert`.
Showing all 18 steps of the trace


crypto/err/err.c:302:12: Call
300.   
301.       CRYPTO_THREAD_write_lock(err_string_lock);
302.       hash = get_hash(1, 0);
                  ^
303.       if (hash) {
304.           for (; str->error; str++) {

crypto/err/err.c:164:26: Call
  162.           CRYPTO_THREAD_write_lock(err_string_lock);
  163.       if (!int_error_hash && create) {
  164.           int_error_hash = lh_ERR_STRING_DATA_new(err_string_data_hash,
                                  ^
  165.                                                   err_string_data_cmp);
  166.       }

include/openssl/err.h:203:1: Call
    201.   } ERR_STRING_DATA;
    202.   
    203. > DEFINE_LHASH_OF(ERR_STRING_DATA);
    204.   
    205.   void ERR_put_error(int lib, int func, int reason, const char *file, int line);

crypto/lhash/lhash.c:38:5: Assignment
      36.       ret->hash = ((h == NULL) ? (OPENSSL_LH_HASHFUNC)OPENSSL_LH_strhash : h);
      37.       ret->num_nodes = MIN_NODES / 2;
      38.       ret->num_alloc_nodes = MIN_NODES;
                ^
      39.       ret->pmax = MIN_NODES / 2;
      40.       ret->up_load = UP_LOAD;

crypto/err/err.c:307:19: Call
305.               if (lib)
306.                   str->error |= ERR_PACK(lib, 0, 0);
307.               (void)lh_ERR_STRING_DATA_insert(hash, str);
                         ^
308.           }
309.       }

include/openssl/err.h:203:1: Parameter `lh->num_alloc_nodes`
  201.   } ERR_STRING_DATA;
  202.   
  203. > DEFINE_LHASH_OF(ERR_STRING_DATA);
  204.   
  205.   void ERR_put_error(int lib, int func, int reason, const char *file, int line);

include/openssl/err.h:203:1: Call
  201.   } ERR_STRING_DATA;
  202.   
  203. > DEFINE_LHASH_OF(ERR_STRING_DATA);
  204.   
  205.   void ERR_put_error(int lib, int func, int reason, const char *file, int line);

crypto/lhash/lhash.c:70:1: Parameter `lh->num_alloc_nodes`
    68.   }
    69.   
    70. > void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data)
    71.   {
    72.       unsigned long hash;

crypto/lhash/lhash.c:77:77: Call
    75.   
    76.       lh->error = 0;
    77.       if ((lh->up_load <= (lh->num_items * LH_LOAD_MULT / lh->num_nodes)) && !expand(lh))
                                                                                      ^
    78.           return NULL;        /* 'lh->error++' already done in 'expand' */
    79.   

crypto/lhash/lhash.c:187:1: <Offset trace>
185.   }
186.   
187. > static int expand(OPENSSL_LHASH *lh)
188.   {
189.       OPENSSL_LH_NODE **n, **n1, **n2, *np;

crypto/lhash/lhash.c:187:1: Parameter `lh->num_alloc_nodes`
      185.   }
      186.   
      187. > static int expand(OPENSSL_LHASH *lh)
      188.   {
      189.       OPENSSL_LH_NODE **n, **n1, **n2, *np;

crypto/lhash/lhash.c:213:9: Assignment
      211.   
      212.       if ((lh->p) >= lh->pmax) {
      213.           j = (int)lh->num_alloc_nodes * 2;
                     ^
      214.           n = OPENSSL_realloc(lh->b, (int)(sizeof(OPENSSL_LH_NODE *) * j));
      215.           if (n == NULL) {

crypto/lhash/lhash.c:187:1: <Length trace>
185.   }
186.   
187. > static int expand(OPENSSL_LHASH *lh)
188.   {
189.       OPENSSL_LH_NODE **n, **n1, **n2, *np;

crypto/lhash/lhash.c:187:1: Parameter `*lh->b`
      185.   }
      186.   
      187. > static int expand(OPENSSL_LHASH *lh)
      188.   {
      189.       OPENSSL_LH_NODE **n, **n1, **n2, *np;

crypto/lhash/lhash.c:214:13: Call
      212.       if ((lh->p) >= lh->pmax) {
      213.           j = (int)lh->num_alloc_nodes * 2;
      214.           n = OPENSSL_realloc(lh->b, (int)(sizeof(OPENSSL_LH_NODE *) * j));
                         ^
      215.           if (n == NULL) {
      216.               /* fputs("realloc error in lhash",stderr); */

crypto/mem.c:117:9: Assignment
        115.       if (num == 0) {
        116.           CRYPTO_free(str, file, line);
        117.           return NULL;
                       ^
        118.       }
        119.   

crypto/lhash/lhash.c:214:9: Assignment
      212.       if ((lh->p) >= lh->pmax) {
      213.           j = (int)lh->num_alloc_nodes * 2;
      214.           n = OPENSSL_realloc(lh->b, (int)(sizeof(OPENSSL_LH_NODE *) * j));
                     ^
      215.           if (n == NULL) {
      216.               /* fputs("realloc error in lhash",stderr); */

crypto/lhash/lhash.c:222:13: Array access: Offset: [16, +oo] Size: [1, +oo] by call to `lh_ERR_STRING_DATA_insert` 
      220.           }
      221.           for (i = (int)lh->num_alloc_nodes; i < j; i++) /* 26/02/92 eay */
      222.               n[i] = NULL;        /* 02/03/92 eay */
                         ^
      223.           lh->pmax = lh->num_alloc_nodes;
      224.           lh->num_alloc_nodes = j;
