diff --git a/src/signal_handler.c b/src/signal_handler.c
index c886a86d08c4ee3a432653b7ed2470600905132c..b0a04bb7c6ef7d67a17320a8f99f4855fbb73ab5 100644
--- a/src/signal_handler.c
+++ b/src/signal_handler.c
@@ -1076,7 +1076,7 @@ void forkd(int fd)
     do {
       j = close(i);
     } while ((j < 0) && (errno == EINTR));
-    if ((j < 0) && (errno = EBADF)) num_fail++;
+    if ((j < 0) && (errno == EBADF)) num_fail++;
   }
 
   while (1) {
@@ -1088,7 +1088,7 @@ void forkd(int fd)
     iov.iov_len = 1;
     do {
       i = recvmsg(fd, &msg, 0);
-    } while ((i < 0) && (errno = EINTR));
+    } while ((i < 0) && (errno == EINTR));
     if (!i) _exit(0);	/* Connection closed, shutdown forkd. */
     for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
       int ctrl_fd = NULL;
@@ -1101,7 +1101,7 @@ void forkd(int fd)
       num_fds = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int);
       do {
 	i = fork();
-      } while ((i < 0) && (errno = EINTR));
+      } while ((i < 0) && (errno == EINTR));
       if (i < 0) {
 	/* Fork failure. */
       } else if (i) {