| 639 | } |
| 640 | |
| 641 | const char *ssl_cmd_SSLRandomSeed(cmd_parms *cmd, |
| 642 | void *dcfg, |
| 643 | const char *arg1, |
| 644 | const char *arg2, |
| 645 | const char *arg3) |
| 646 | { |
| 647 | SSLModConfigRec *mc = myModConfig(cmd->server); |
| 648 | const char *err; |
| 649 | ssl_randseed_t *seed; |
| 650 | int arg2len = strlen(arg2); |
| 651 | |
| 652 | if ((err = ap_check_cmd_context(cmd, GLOBAL_ONLY))) { |
| 653 | return err; |
| 654 | } |
| 655 | |
| 656 | if (ssl_config_global_isfixed(mc)) { |
| 657 | return NULL; |
| 658 | } |
| 659 | |
| 660 | seed = apr_array_push(mc->aRandSeed); |
| 661 | |
| 662 | if (strcEQ(arg1, "startup")) { |
| 663 | seed->nCtx = SSL_RSCTX_STARTUP; |
| 664 | } |
| 665 | else if (strcEQ(arg1, "connect")) { |
| 666 | seed->nCtx = SSL_RSCTX_CONNECT; |
| 667 | } |
| 668 | else { |
| 669 | return apr_pstrcat(cmd->pool, "SSLRandomSeed: " |
| 670 | "invalid context: `", arg1, "'", |
| 671 | NULL); |
| 672 | } |
| 673 | |
| 674 | if ((arg2len > 5) && strEQn(arg2, "file:", 5)) { |
| 675 | seed->nSrc = SSL_RSSRC_FILE; |
| 676 | seed->cpPath = ap_server_root_relative(mc->pPool, arg2+5); |
| 677 | } |
| 678 | else if ((arg2len > 5) && strEQn(arg2, "exec:", 5)) { |
| 679 | seed->nSrc = SSL_RSSRC_EXEC; |
| 680 | seed->cpPath = ap_server_root_relative(mc->pPool, arg2+5); |
| 681 | } |
| 682 | else if ((arg2len > 4) && strEQn(arg2, "egd:", 4)) { |
| 683 | #ifdef HAVE_RAND_EGD |
| 684 | seed->nSrc = SSL_RSSRC_EGD; |
| 685 | seed->cpPath = ap_server_root_relative(mc->pPool, arg2+4); |
| 686 | #else |
| 687 | return apr_pstrcat(cmd->pool, "Invalid SSLRandomSeed entropy source `", |
| 688 | arg2, "': This version of " MODSSL_LIBRARY_NAME |
| 689 | " does not support the Entropy Gathering Daemon " |
| 690 | "(EGD).", NULL); |
| 691 | #endif |
| 692 | } |
| 693 | else if (strcEQ(arg2, "builtin")) { |
| 694 | seed->nSrc = SSL_RSSRC_BUILTIN; |
| 695 | seed->cpPath = NULL; |
| 696 | } |
| 697 | else { |
| 698 | seed->nSrc = SSL_RSSRC_FILE; |
nothing calls this directly
no test coverage detected