]> git.meshlink.io Git - meshlink/blobdiff - src/crypto.c
Avoid casting function pointers.
[meshlink] / src / crypto.c
index e3797f8d79d04a0c8e8341786693e2fcc365979a..1bdd8b0745597bd5a35f73bfefa18a7d10db3dca 100644 (file)
@@ -29,8 +29,11 @@ static int random_fd = -1;
 
 void crypto_init(void) {
        random_fd = open("/dev/urandom", O_RDONLY);
-       if(random_fd < 0)
+
+       if(random_fd < 0) {
                random_fd = open("/dev/random", O_RDONLY);
+       }
+
        if(random_fd < 0) {
                fprintf(stderr, "Could not open source of random numbers: %s\n", strerror(errno));
                abort();
@@ -42,15 +45,21 @@ void crypto_exit(void) {
 }
 
 void randomize(void *out, size_t outlen) {
+       char *ptr = out;
+
        while(outlen) {
-               size_t len = read(random_fd, out, outlen);
+               size_t len = read(random_fd, ptr, outlen);
+
                if(len <= 0) {
-                       if(errno == EAGAIN || errno == EINTR)
+                       if(errno == EAGAIN || errno == EINTR) {
                                continue;
+                       }
+
                        fprintf(stderr, "Could not read random numbers: %s\n", strerror(errno));
                        abort();
                }
-               out += len;
+
+               ptr += len;
                outlen -= len;
        }
 }