]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
- (djm) [configure.ac atomicio.c] Kludge around NetBSD offering
authorDamien Miller <djm@mindrot.org>
Thu, 30 Jan 2014 00:26:46 +0000 (11:26 +1100)
committerDamien Miller <djm@mindrot.org>
Thu, 30 Jan 2014 00:26:46 +0000 (11:26 +1100)
   different symbols for 'read' when various compiler flags are
   in use, causing atomicio.c comparisons against it to break and
   read/write operations to hang; ok dtucker

ChangeLog
atomicio.c
configure.ac

index 05e753423ddf914fdfef3f15761f9c73489524e9..cf7e12f0a7f1f4485449e6fb432f8d359063a8ba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
  - (djm) [configure.ac] Only check for width-specified integer types
    in headers that actually exist. patch from Tom G. Christensen;
    ok dtucker@
+ - (djm) [configure.ac atomicio.c] Kludge around NetBSD offering
+   different symbols for 'read' when various compiler flags are
+   in use, causing atomicio.c comparisons against it to break and
+   read/write operations to hang; ok dtucker
 
 20140129
  - (djm) [configure.ac] Fix broken shell test '==' vs '='; patch from
index 601b3c371c215e7acdaab2e4a7e9da2d9ac6a777..2bac36c91cd7cafff9d5b5a5a212744c6555dbc4 100644 (file)
@@ -56,8 +56,10 @@ atomicio6(ssize_t (*f) (int, void *, size_t), int fd, void *_s, size_t n,
        ssize_t res;
        struct pollfd pfd;
 
+#ifndef BROKEN_READ_COMPARISON
        pfd.fd = fd;
        pfd.events = f == read ? POLLIN : POLLOUT;
+#endif
        while (n > pos) {
                res = (f) (fd, s + pos, n - pos);
                switch (res) {
@@ -65,7 +67,9 @@ atomicio6(ssize_t (*f) (int, void *, size_t), int fd, void *_s, size_t n,
                        if (errno == EINTR)
                                continue;
                        if (errno == EAGAIN || errno == EWOULDBLOCK) {
+#ifndef BROKEN_READ_COMPARISON
                                (void)poll(&pfd, 1, -1);
+#endif
                                continue;
                        }
                        return 0;
index 5713621637d6a280b5dd528ea1738c53af8c4652..dfd32cd851834f3af06f8d5378201e21f1dc520a 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: configure.ac,v 1.567 2014/01/29 23:21:20 djm Exp $
+# $Id: configure.ac,v 1.568 2014/01/30 00:26:46 djm Exp $
 #
 # Copyright (c) 1999-2004 Damien Miller
 #
@@ -15,7 +15,7 @@
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 AC_INIT([OpenSSH], [Portable], [openssh-unix-dev@mindrot.org])
-AC_REVISION($Revision: 1.567 $)
+AC_REVISION($Revision: 1.568 $)
 AC_CONFIG_SRCDIR([ssh.c])
 AC_LANG([C])
 
@@ -769,6 +769,8 @@ mips-sony-bsd|mips-sony-newsos4)
        TEST_MALLOC_OPTIONS="AJRX"
        AC_DEFINE([BROKEN_STRNVIS], [1],
            [NetBSD strnvis argument order is swapped compared to OpenBSD])
+       AC_DEFINE([BROKEN_READ_COMPARISON], [1],
+           [NetBSD read function is sometimes redirected, breaking atomicio comparisons against it])
        ;;
 *-*-freebsd*)
        check_for_libcrypt_later=1