Commit 0856d72f authored by Cliff Woolley's avatar Cliff Woolley
Browse files

Consensus is that we should not use the scoreboard as a source of entropy.

Reviewed by: OtherBill, Justin, Madhu


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/ssl@93652 13f79535-47bb-0310-9956-ffa450edef68
parent d0da5b0e
Loading
Loading
Loading
Loading
+0 −1
Changes for mod_ssl.h: 0 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -515,7 +515,6 @@ typedef struct {
    char           *szMutexFile;
    apr_lock_t     *pMutex;
    apr_array_header_t   *aRandSeed;
    int             nScoreboardSize; /* used for builtin random seed */
    apr_hash_t     *tVHostKeys;
    apr_hash_t     *tTmpKeys;
    void           *pTmpKeys[SSL_TKPIDX_MAX];
+0 −4
Changes for ssl_engine_init.c: 0 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -163,11 +163,7 @@ int ssl_init_Module(apr_pool_t *p, apr_pool_t *plog,

    /*
     * Seed the Pseudo Random Number Generator (PRNG)
     *
     * Note: scoreboard size must be fetched at init time because
     * ap_calc_scoreboard_size() is not threadsafe
     */
    mc->nScoreboardSize = ap_calc_scoreboard_size();
    ssl_rand_seed(s, p, SSL_RSCTX_STARTUP, "Init: ");

    /*
+0 −16
Changes for ssl_engine_rand.c: 0 added lines, 16 removed lines.
Original line number Diff line number Diff line
@@ -81,7 +81,6 @@ int ssl_rand_seed(server_rec *s, apr_pool_t *p, ssl_rsctx_t nCtx, char *prefix)
    int nReq, nDone;
    apr_file_t *fp;
    int i, n, l;
    int m;

    mc = myModConfig(s);
    nReq  = 0;
@@ -155,21 +154,6 @@ int ssl_rand_seed(server_rec *s, apr_pool_t *p, ssl_rsctx_t nCtx, char *prefix)
                RAND_seed(stackdata+n, 128);
                nDone += 128;

                /*
                 * seed in data extracted from the current scoreboard
                 *
                 * XXX: this assumes that the entire scoreboard is
                 * allocated in one big block of memory that begins at
                 * the location pointed to by ap_scoreboard_image->global
                 */
                if (ap_scoreboard_image != NULL && mc->nScoreboardSize > 16)
                {
                    m = ((mc->nScoreboardSize / 2) - 1);
                    n = ssl_rand_choosenum(0, m);
                    RAND_seed(
                        ((unsigned char *)ap_scoreboard_image->global)+n, m);
                    nDone += m;
                }
            }
        }
    }