apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Stein <gst...@gmail.com>
Subject bugs in apr_crypto_get_driver()
Date Sat, 31 Mar 2012 22:07:12 GMT
I've identified two problems in apr_crypto_get_driver(), and need
somebody to review my thinking and make the appropriate corrections.

First up is this block:

    rv = apu_dso_load(&dso, &symbol, modname, symname, pool);
    if (rv != APR_SUCCESS) { /* APR_EDSOOPEN or APR_ESYMNOTFOUND? */
        if (rv == APR_EINIT) { /* previously loaded?!? */
            name = apr_pstrdup(pool, name);
            apr_hash_set(drivers, name, APR_HASH_KEY_STRING, *driver);
            rv = APR_SUCCESS;

That apr_hash_set() will store a NULL, since the only way here is when
*driver == NULL. Further, it certainly shouldn't set rv to APR_SUCCESS
since nothing got loaded and returned in *driver.

The second problem is the series of DRIVER_LOAD() calls at the bottom
of the function. None of these appear to set *driver to the
appropriate value. (and beware macro arg name shadowing)

Cheers,
-g

Mime
View raw message