From: Frank Lichtenheld <fr...@lichtenheld.com> Comparing the result of read/write to a size_t value is dangerous C. Since ssize_t and size_t have the same size ssize_t is promoted to size_t, so -1 becomes size_t max value and is not smaller than the expected length.
Make sure to compare ssize_t to ssize_t to avoid any suprises. Change-Id: Ic395b6d1dce510bb4b499c5beba61f033a2a860b Signed-off-by: Frank Lichtenheld <fr...@lichtenheld.com> Acked-by: Heiko Hund <he...@openvpn.net> Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1208 --- This change was reviewed on Gerrit and approved by at least one developer. I request to merge it to master. Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1208 This mail reflects revision 1 of this Change. Acked-by according to Gerrit (reflected above): Heiko Hund <he...@openvpn.net> diff --git a/src/openvpn/dns.c b/src/openvpn/dns.c index efb888a..2a9e60b 100644 --- a/src/openvpn/dns.c +++ b/src/openvpn/dns.c @@ -642,11 +642,10 @@ while (1) { - ssize_t rlen, wlen; char path[PATH_MAX]; /* Block here until parent sends a path */ - rlen = read(dns_pipe_fd[0], &path, sizeof(path)); + ssize_t rlen = read(dns_pipe_fd[0], &path, sizeof(path)); if (rlen < 1) { if (rlen == -1 && errno == EINTR) @@ -665,8 +664,8 @@ /* Unblock parent process */ while (1) { - wlen = write(ack_pipe_fd[1], &res, sizeof(res)); - if ((wlen == -1 && errno != EINTR) || wlen < sizeof(res)) + ssize_t wlen = write(ack_pipe_fd[1], &res, sizeof(res)); + if ((wlen == -1 && errno != EINTR) || wlen < (ssize_t)sizeof(res)) { /* Not much we can do about errors but exit */ close(dns_pipe_fd[0]); @@ -727,7 +726,7 @@ env_set_write_file(dvf, es); int wfd = updown_runner->fds[1]; - size_t dvf_size = strlen(dvf) + 1; + ssize_t dvf_size = strlen(dvf) + 1; while (1) { ssize_t len = write(wfd, dvf, dvf_size); @@ -746,7 +745,7 @@ while (1) { ssize_t len = read(rfd, &status, sizeof(status)); - if (len < sizeof(status)) + if (len < (ssize_t)sizeof(status)) { if (len == -1 && errno == EINTR) { _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel