chiark / gitweb /
Pull fetching random bytes into the system-specific code.
[yaid] / yaid.c
diff --git a/yaid.c b/yaid.c
index da015e128f78d54be6a90913976507b6baf55889..13e1208312a50ca4fafc8e7e25954f7cebb4d086 100644 (file)
--- a/yaid.c
+++ b/yaid.c
@@ -88,7 +88,6 @@ static fwatch polfw;                  /* Watch policy file for changes */
 
 static unsigned char tokenbuf[4096];   /* Random-ish data for tokens */
 static size_t tokenptr = sizeof(tokenbuf); /* Current read position */
-static int randfd;                     /* File descriptor for random data */
 
 static struct client *dead_clients = 0;        /* List of defunct clients */
 static struct proxy *dead_proxies = 0; /* List of defunct proxies */
@@ -626,8 +625,7 @@ static void user_token(char *p)
    * from the kernel.
    */
   if (tokenptr + TOKENRANDSZ >= sizeof(tokenbuf)) {
-    if (read(randfd, tokenbuf, sizeof(tokenbuf)) < sizeof(tokenbuf))
-      die(1, "unexpected short read or error from `/dev/urandom'");
+    fill_random(tokenbuf, sizeof(tokenbuf));
     tokenptr = 0;
   }
 
@@ -1092,12 +1090,6 @@ int main(int argc, char *argv[])
   if (load_policy_file(policyfile, &policy))
     exit(1);
 
-  /* Open the random data source. */
-  if ((randfd = open("/dev/urandom", O_RDONLY)) < 0) {
-    die(1, "failed to open `/dev/urandom' for reading: %s",
-       strerror(errno));
-  }
-
   /* Set up the I/O event system. */
   sel_init(&sel);