The F_DUPFD_CLOEXEC operation with fcntl() expects a single
int argument, specifying the minimum FD number for the newly
dup'd file descriptor. We were not specifying that causing
random stack data to be accessed as the FD number. Sometimes
that worked, sometimes it didn't.
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
(cherry picked from commit
d6670a64e1067f29da3c3e032739e140280b763d)
int fd;
if (cloexec)
- fd = fcntl(sock->fd, F_DUPFD_CLOEXEC);
+ fd = fcntl(sock->fd, F_DUPFD_CLOEXEC, 0);
else
fd = dup(sock->fd);
if (fd < 0) {