}
}
+static apr_status_t seed_rand()
+{
+ int seed = 0;
+ apr_status_t rv;
+ rv = apr_generate_random_bytes((unsigned char*) &seed, sizeof(seed));
+ if (rv) {
+ apr_file_printf(errfile, "Unable to generate random bytes: %pm" NL, rv);
+ return rv;
+ }
+ srand(seed);
+ return rv;
+}
static void putline(apr_file_t *f, const char *l)
{
break;
case ALG_APMD5:
- (void) srand((int) time((time_t *) NULL));
+ if (seed_rand()) {
+ break;
+ }
generate_salt(&salt[0], 8);
salt[8] = '\0';
#if (!(defined(WIN32) || defined(TPF) || defined(NETWARE)))
case ALG_CRYPT:
default:
- (void) srand((int) time((time_t *) NULL));
+ if (seed_rand()) {
+ break;
+ }
to64(&salt[0], rand(), 8);
salt[8] = '\0';