crypto/engine/tb_asnmth.c:194: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned32 by call to `engine_table_doall`.
Showing all 10 steps of the trace


crypto/engine/tb_asnmth.c:194:5: Call
192.       CRYPTO_THREAD_run_once(&engine_lock_init, do_engine_lock_init);
193.       CRYPTO_THREAD_write_lock(global_engine_lock);
194.       engine_table_doall(pkey_asn1_meth_table, look_str_cb, &fstr);
           ^
195.       /* If found obtain a structural reference to engine */
196.       if (fstr.e) {

crypto/engine/eng_table.c:295:1: Parameter `table->piles.num_nodes`
  293.   IMPLEMENT_LHASH_DOALL_ARG_CONST(ENGINE_PILE, ENGINE_PILE_DOALL);
  294.   
  295. > void engine_table_doall(ENGINE_TABLE *table, engine_table_doall_cb *cb,
  296.                           void *arg)
  297.   {

crypto/engine/eng_table.c:302:9: Call
  300.       dall.arg = arg;
  301.       if (table)
  302.           lh_ENGINE_PILE_doall_ENGINE_PILE_DOALL(&table->piles, int_dall, &dall);
                 ^
  303.   }

crypto/engine/eng_table.c:293:1: Parameter `lh->num_nodes`
    291.   }
    292.   
    293. > IMPLEMENT_LHASH_DOALL_ARG_CONST(ENGINE_PILE, ENGINE_PILE_DOALL);
    294.   
    295.   void engine_table_doall(ENGINE_TABLE *table, engine_table_doall_cb *cb,

crypto/engine/eng_table.c:293:1: Call
    291.   }
    292.   
    293. > IMPLEMENT_LHASH_DOALL_ARG_CONST(ENGINE_PILE, ENGINE_PILE_DOALL);
    294.   
    295.   void engine_table_doall(ENGINE_TABLE *table, engine_table_doall_cb *cb,

crypto/lhash/lhash.c:182:1: Parameter `lh->num_nodes`
      180.   }
      181.   
      182. > void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg)
      183.   {
      184.       doall_util_fn(lh, 1, (OPENSSL_LH_DOALL_FUNC)0, func, arg);

crypto/lhash/lhash.c:184:5: Call
      182.   void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg)
      183.   {
      184.       doall_util_fn(lh, 1, (OPENSSL_LH_DOALL_FUNC)0, func, arg);
                 ^
      185.   }
      186.   

crypto/lhash/lhash.c:150:1: <LHS trace>
148.   }
149.   
150. > static void doall_util_fn(OPENSSL_LHASH *lh, int use_arg,
151.                             OPENSSL_LH_DOALL_FUNC func,
152.                             OPENSSL_LH_DOALL_FUNCARG func_arg, void *arg)

crypto/lhash/lhash.c:150:1: Parameter `lh->num_nodes`
        148.   }
        149.   
        150. > static void doall_util_fn(OPENSSL_LHASH *lh, int use_arg,
        151.                             OPENSSL_LH_DOALL_FUNC func,
        152.                             OPENSSL_LH_DOALL_FUNCARG func_arg, void *arg)

crypto/lhash/lhash.c:164:10: Binary operation: ([0, +oo] - 1):unsigned32 by call to `engine_table_doall` 
        162.        * memory leaks otherwise
        163.        */
        164.       for (i = lh->num_nodes - 1; i >= 0; i--) {
                        ^
        165.           a = lh->b[i];
        166.           while (a != NULL) {

static void doall_util_fn(OPENSSL_LHASH *lh, int use_arg,
                          OPENSSL_LH_DOALL_FUNC func,
                          OPENSSL_LH_DOALL_FUNCARG func_arg, void *arg)
{
    int i;
    OPENSSL_LH_NODE *a, *n;
    if (lh == NULL)
        return;
    for (i = lh->num_nodes - 1; i >= 0; i--) {
        a = lh->b[i];
        while (a != NULL) {
            n = a->next;
            if (use_arg)
                func_arg(a->data, arg);
            else
                func(a->data);
            a = n;
        }
    }
}
['const EVP_PKEY_ASN1_METHOD *ENGINE_pkey_asn1_find_str(ENGINE **pe,\n                                                      const char *str,\n                                                      int len)\n{\n    ENGINE_FIND_STR fstr;\n    fstr.e = NULL;\n    fstr.ameth = NULL;\n    fstr.str = str;\n    fstr.len = len;\n    CRYPTO_THREAD_run_once(&engine_lock_init, do_engine_lock_init);\n    CRYPTO_THREAD_write_lock(global_engine_lock);\n    engine_table_doall(pkey_asn1_meth_table, look_str_cb, &fstr);\n    if (fstr.e) {\n        fstr.e->struct_ref++;\n        engine_ref_debug(fstr.e, 0, 1);\n    }\n    *pe = fstr.e;\n    CRYPTO_THREAD_unlock(global_engine_lock);\n    return fstr.ameth;\n}', 'void engine_table_doall(ENGINE_TABLE *table, engine_table_doall_cb *cb,\n                        void *arg)\n{\n    ENGINE_PILE_DOALL dall;\n    dall.cb = cb;\n    dall.arg = arg;\n    if (table)\n        lh_ENGINE_PILE_doall_ENGINE_PILE_DOALL(&table->piles, int_dall, &dall);\n}', 'IMPLEMENT_LHASH_DOALL_ARG_CONST(ENGINE_PILE, ENGINE_PILE_DOALL)', 'void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg)\n{\n    doall_util_fn(lh, 1, (OPENSSL_LH_DOALL_FUNC)0, func, arg);\n}', 'static void doall_util_fn(OPENSSL_LHASH *lh, int use_arg,\n                          OPENSSL_LH_DOALL_FUNC func,\n                          OPENSSL_LH_DOALL_FUNCARG func_arg, void *arg)\n{\n    int i;\n    OPENSSL_LH_NODE *a, *n;\n    if (lh == NULL)\n        return;\n    for (i = lh->num_nodes - 1; i >= 0; i--) {\n        a = lh->b[i];\n        while (a != NULL) {\n            n = a->next;\n            if (use_arg)\n                func_arg(a->data, arg);\n            else\n                func(a->data);\n            a = n;\n        }\n    }\n}']