Add userdata argument to reseed callback function.
authorJelmer Vernooij <jelmer@samba.org>
Tue, 1 Apr 2008 13:17:18 +0000 (15:17 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 1 Apr 2008 13:17:18 +0000 (15:17 +0200)
source/lib/util/genrand.c
source/lib/util/tests/genrand.c
source/lib/util/util.h

index 5751db23d67b029f82392f671120ec02e3e9f3f5..7df4ec4e20c618bff2a1d0354897deaaba8b0e1c 100644 (file)
@@ -37,15 +37,17 @@ static unsigned int bytes_since_reseed = 0;
 
 static int urand_fd = -1;
 
-static void (*reseed_callback)(int *newseed);
+static void (*reseed_callback)(void *userdata, int *newseed);
+static void *reseed_callback_userdata = NULL;
 
 /**
  Copy any user given reseed data.
 **/
 
-_PUBLIC_ void set_rand_reseed_callback(void (*fn)(int *))
+_PUBLIC_ void set_rand_reseed_callback(void (*fn)(void *, int *), void *userdata)
 {
        reseed_callback = fn;
+       reseed_callback_userdata = userdata;
        set_need_random_reseed();
 }
 
@@ -61,7 +63,7 @@ _PUBLIC_ void set_need_random_reseed(void)
 static void get_rand_reseed_data(int *reseed_data)
 {
        if (reseed_callback) {
-               reseed_callback(reseed_data);
+               reseed_callback(reseed_callback_userdata, reseed_data);
        } else {
                *reseed_data = 0;
        }
index 205a66352fe23318198c007ac6b2c3f5123b1e48..5fe229c089e3e8f23e05a3070fc8e8bfd03d6cfa 100644 (file)
 #include "includes.h"
 #include "torture/torture.h"
 
-static void dummy_reseed(int *d)
+static void dummy_reseed(void *userdata, int *d)
 {
        *d = 42;
 }
 
 static bool test_reseed_callback(struct torture_context *tctx)
 {
-       set_rand_reseed_callback(dummy_reseed);
+       set_rand_reseed_callback(dummy_reseed, NULL);
        return true;
 }
 
index 26700587efba8be7b0cf4e1d4d6166553a094cc3..60c84376345845fa09a2251ed22e4a1ab3c2a287 100644 (file)
@@ -218,7 +218,7 @@ _PUBLIC_ struct in_addr sys_inet_makeaddr(int net, int host);
 /**
  Copy any user given reseed data.
 **/
-_PUBLIC_ void set_rand_reseed_callback(void (*fn)(int *));
+_PUBLIC_ void set_rand_reseed_callback(void (*fn)(void *, int *), void *);
 
 /**
  * Tell the random number generator it needs to reseed.