Fix segfault when failing to read random numbers.
[tinc] / src / openssl / crypto.c
index e594e73..072bf7a 100644 (file)
@@ -50,10 +50,10 @@ void randomize(void *vout, size_t outlen) {
        char *out = vout;
 
        while(outlen) {
-               size_t len = read(random_fd, out, outlen);
+               ssize_t len = read(random_fd, out, outlen);
 
                if(len <= 0) {
-                       if(errno == EAGAIN || errno == EINTR) {
+                       if(len == -1 && (errno == EAGAIN || errno == EINTR)) {
                                continue;
                        }