crypto/engine/tb_store.c:72: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned32 by call to `engine_table_cleanup`.
Showing all 8 steps of the trace


crypto/engine/tb_store.c:72:2: Call
70.   static void engine_unregister_all_STORE(void)
71.   	{
72.   	engine_table_cleanup(&store_table);
       ^
73.   	}
74.   

crypto/engine/eng_table.c:225:1: Parameter `(*table)->piles.num_nodes`
  223.   static IMPLEMENT_LHASH_DOALL_FN(int_cleanup_cb, ENGINE_PILE)
  224.   
  225. > void engine_table_cleanup(ENGINE_TABLE **table)
  226.   	{
  227.   	CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);

crypto/engine/eng_table.c:230:3: Call
  228.   	if(*table)
  229.   		{
  230.   		lh_ENGINE_PILE_doall(&(*table)->piles,
           ^
  231.   				     LHASH_DOALL_FN(int_cleanup_cb));
  232.   		lh_ENGINE_PILE_free(&(*table)->piles);

crypto/lhash/lhash.c:300:1: Parameter `lh->num_nodes`
    298.   	}
    299.   
    300. > void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func)
    301.   	{
    302.   	doall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)0, NULL);

crypto/lhash/lhash.c:302:2: Call
    300.   void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func)
    301.   	{
    302.   	doall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)0, NULL);
            ^
    303.   	}
    304.   

crypto/lhash/lhash.c:270:1: <LHS trace>
268.   	}
269.   
270. > static void doall_util_fn(_LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
271.   			  LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg)
272.   	{

crypto/lhash/lhash.c:270:1: Parameter `lh->num_nodes`
      268.   	}
      269.   
      270. > static void doall_util_fn(_LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
      271.   			  LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg)
      272.   	{

crypto/lhash/lhash.c:281:7: Binary operation: ([0, +oo] - 1):unsigned32 by call to `engine_table_cleanup` 
      279.   	/* reverse the order so we search from 'top to bottom'
      280.   	 * We were having memory leaks otherwise */
      281.   	for (i=lh->num_nodes-1; i>=0; i--)
                   ^
      282.   		{
      283.   		a=lh->b[i];

static void doall_util_fn(_LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
			  LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg)
	{
	int i;
	LHASH_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;
			}
		}
	}
['static void engine_unregister_all_STORE(void)\n\t{\n\tengine_table_cleanup(&store_table);\n\t}', 'void engine_table_cleanup(ENGINE_TABLE **table)\n\t{\n\tCRYPTO_w_lock(CRYPTO_LOCK_ENGINE);\n\tif(*table)\n\t\t{\n\t\tlh_ENGINE_PILE_doall(&(*table)->piles,\n\t\t\t\t     LHASH_DOALL_FN(int_cleanup_cb));\n\t\tlh_ENGINE_PILE_free(&(*table)->piles);\n\t\t*table = NULL;\n\t\t}\n\tCRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);\n\t}', 'void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func)\n\t{\n\tdoall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)0, NULL);\n\t}', 'static void doall_util_fn(_LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,\n\t\t\t  LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg)\n\t{\n\tint i;\n\tLHASH_NODE *a,*n;\n\tif (lh == NULL)\n\t\treturn;\n\tfor (i=lh->num_nodes-1; i>=0; i--)\n\t\t{\n\t\ta=lh->b[i];\n\t\twhile (a != NULL)\n\t\t\t{\n\t\t\tn=a->next;\n\t\t\tif(use_arg)\n\t\t\t\tfunc_arg(a->data,arg);\n\t\t\telse\n\t\t\t\tfunc(a->data);\n\t\t\ta=n;\n\t\t\t}\n\t\t}\n\t}']