crypto/store/store_register.c:233: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned64 by call to `lh_OSSL_STORE_LOADER_delete`.
Showing all 6 steps of the trace


crypto/store/store_register.c:233:14: Call
231.       CRYPTO_THREAD_write_lock(registry_lock);
232.   
233.       loader = lh_OSSL_STORE_LOADER_delete(loader_register, &template);
                    ^
234.   
235.       if (loader == NULL) {

crypto/store/store_locl.h:59:1: Parameter `lh->num_items`
  57.       OSSL_STORE_close_fn close;
  58.   };
  59. > DEFINE_LHASH_OF(OSSL_STORE_LOADER);
  60.   
  61.   const OSSL_STORE_LOADER *ossl_store_get0_loader_int(const char *scheme);

crypto/store/store_locl.h:59:1: Call
  57.       OSSL_STORE_close_fn close;
  58.   };
  59. > DEFINE_LHASH_OF(OSSL_STORE_LOADER);
  60.   
  61.   const OSSL_STORE_LOADER *ossl_store_get0_loader_int(const char *scheme);

crypto/lhash/lhash.c:106:1: <LHS trace>
104.   }
105.   
106. > void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data)
107.   {
108.       unsigned long hash;

crypto/lhash/lhash.c:106:1: Parameter `lh->num_items`
    104.   }
    105.   
    106. > void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data)
    107.   {
    108.       unsigned long hash;

crypto/lhash/lhash.c:126:5: Binary operation: ([0, +oo] - 1):unsigned64 by call to `lh_OSSL_STORE_LOADER_delete` 
    124.       }
    125.   
    126.       lh->num_items--;
               ^
    127.       if ((lh->num_nodes > MIN_NODES) &&
    128.           (lh->down_load >= (lh->num_items * LH_LOAD_MULT / lh->num_nodes)))

void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data)
{
    unsigned long hash;
    OPENSSL_LH_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);
}
['OSSL_STORE_LOADER *ossl_store_unregister_loader_int(const char *scheme)\n{\n    OSSL_STORE_LOADER template;\n    OSSL_STORE_LOADER *loader = NULL;\n    template.scheme = scheme;\n    template.open = NULL;\n    template.load = NULL;\n    template.eof = NULL;\n    template.close = NULL;\n    if (!RUN_ONCE(&registry_init, do_registry_init)) {\n        OSSL_STOREerr(OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT,\n                      ERR_R_MALLOC_FAILURE);\n        return NULL;\n    }\n    CRYPTO_THREAD_write_lock(registry_lock);\n    loader = lh_OSSL_STORE_LOADER_delete(loader_register, &template);\n    if (loader == NULL) {\n        OSSL_STOREerr(OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT,\n                      OSSL_STORE_R_UNREGISTERED_SCHEME);\n        ERR_add_error_data(2, "scheme=", scheme);\n    }\n    CRYPTO_THREAD_unlock(registry_lock);\n    return loader;\n}', 'DEFINE_LHASH_OF(OSSL_STORE_LOADER)', 'void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data)\n{\n    unsigned long hash;\n    OPENSSL_LH_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}']