aboutsummaryrefslogtreecommitdiff
path: root/ares/ares_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'ares/ares_init.c')
-rw-r--r--ares/ares_init.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/ares/ares_init.c b/ares/ares_init.c
index e86d80ca4..efde96772 100644
--- a/ares/ares_init.c
+++ b/ares/ares_init.c
@@ -1276,6 +1276,7 @@ static void natural_mask(struct apattern *pat)
static void randomize_key(unsigned char* key,int key_data_len)
{
int randomized = 0;
+ int counter=0;
#ifdef WIN32
HMODULE lib=LoadLibrary("ADVAPI32.DLL");
if (lib) {
@@ -1286,11 +1287,22 @@ static void randomize_key(unsigned char* key,int key_data_len)
FreeLibrary(lib);
}
+#else /* !WIN32 */
+#ifdef RANDOM_FILE
+ char buffer[256];
+ FILE *f = fopen(RANDOM_FILE, "rb");
+ if(f) {
+ size_t i;
+ size_t rc = fread(buffer, key_data_len, 1, f);
+ for(i=0; i<rc && counter < key_data_len; i++)
+ key[counter++]=buffer[i];
+ fclose(f);
+ }
#endif
+#endif /* WIN32 */
if ( !randomized ) {
- int counter;
- for (counter=0;counter<key_data_len;counter++)
+ for (;counter<key_data_len;counter++)
key[counter]=rand() % 256;
}
}