crypto/mem_dbg.c:556: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned64 by call to `lh_delete`.
Showing all 4 steps of the trace


crypto/mem_dbg.c:556:18: Call
554.   
555.               m.addr = addr;
556.               mp = lh_MEM_delete(mh, &m);
                        ^
557.               if (mp != NULL) {
558.   #ifdef LEVITTE_DEBUG_MEM

crypto/lhash/lhash.c:213:1: <LHS trace>
211.   }
212.   
213. > void *lh_delete(_LHASH *lh, const void *data)
214.   {
215.       unsigned long hash;

crypto/lhash/lhash.c:213:1: Parameter `lh->num_items`
  211.   }
  212.   
  213. > void *lh_delete(_LHASH *lh, const void *data)
  214.   {
  215.       unsigned long hash;

crypto/lhash/lhash.c:233:5: Binary operation: ([0, +oo] - 1):unsigned64 by call to `lh_delete` 
  231.       }
  232.   
  233.       lh->num_items--;
             ^
  234.       if ((lh->num_nodes > MIN_NODES) &&
  235.           (lh->down_load >= (lh->num_items * LH_LOAD_MULT / lh->num_nodes)))

void *lh_delete(_LHASH *lh, const void *data)
{
    unsigned long hash;
    LHASH_NODE *nn, **rn;
    void *ret;
    lh->error = 0;
    rn = getrn(lh, data, &hash);
    if (*rn == NULL) {
        lh->num_no_delete++;
        return (NULL);
    } else {
        nn = *rn;
        *rn = nn->next;
        ret = nn->data;
        OPENSSL_free(nn);
        lh->num_delete++;
    }
    lh->num_items--;
    if ((lh->num_nodes > MIN_NODES) &&
        (lh->down_load >= (lh->num_items * LH_LOAD_MULT / lh->num_nodes)))
        contract(lh);
    return (ret);
}
['void CRYPTO_dbg_free(void *addr, int before_p)\n{\n    MEM m, *mp;\n    switch (before_p) {\n    case 0:\n        if (addr == NULL)\n            break;\n        if (is_MemCheck_on() && (mh != NULL)) {\n            MemCheck_off();\n            m.addr = addr;\n            mp = lh_MEM_delete(mh, &m);\n            if (mp != NULL) {\n#ifdef LEVITTE_DEBUG_MEM\n                fprintf(stderr, "LEVITTE_DEBUG_MEM: [%5ld] - 0x%p (%d)\\n",\n                        mp->order, mp->addr, mp->num);\n#endif\n                if (mp->app_info != NULL)\n                    app_info_free(mp->app_info);\n                OPENSSL_free(mp);\n            }\n            MemCheck_on();\n        }\n        break;\n    case 1:\n        break;\n    }\n}', 'void *lh_delete(_LHASH *lh, const void *data)\n{\n    unsigned long hash;\n    LHASH_NODE *nn, **rn;\n    void *ret;\n    lh->error = 0;\n    rn = getrn(lh, data, &hash);\n    if (*rn == NULL) {\n        lh->num_no_delete++;\n        return (NULL);\n    } else {\n        nn = *rn;\n        *rn = nn->next;\n        ret = nn->data;\n        OPENSSL_free(nn);\n        lh->num_delete++;\n    }\n    lh->num_items--;\n    if ((lh->num_nodes > MIN_NODES) &&\n        (lh->down_load >= (lh->num_items * LH_LOAD_MULT / lh->num_nodes)))\n        contract(lh);\n    return (ret);\n}']