crypto/ui/ui_openssl.c: make sure to recognise ENXIO and EIO too
authorRichard Levitte <levitte@openssl.org>
Wed, 19 Sep 2018 19:33:45 +0000 (21:33 +0200)
committerRichard Levitte <levitte@openssl.org>
Thu, 20 Sep 2018 04:39:07 +0000 (06:39 +0200)
These both indicate that the file descriptor we're trying to use as a
terminal isn't, in fact, a terminal.

Fixes #7271

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/7272)

crypto/ui/ui_openssl.c

index 45d4820..6b99613 100644 (file)
@@ -415,6 +415,24 @@ static int open_console(UI *ui)
             is_a_tty = 0;
         else
 #  endif
+#  ifdef ENXIO
+            /*
+             * Solaris can return ENXIO.
+             * This should be ok
+             */
+        if (errno == ENXIO)
+            is_a_tty = 0;
+        else
+#  endif
+#  ifdef EIO
+            /*
+             * Linux can return EIO.
+             * This should be ok
+             */
+        if (errno == EIO)
+            is_a_tty = 0;
+        else
+#  endif
 #  ifdef ENODEV
             /*
              * MacOS X returns ENODEV (Operation not supported by device),