From 9c8e9395835d01267e3f4a0ed9618a3461499275 Mon Sep 17 00:00:00 2001 From: tedu Date: Wed, 16 Apr 2014 17:55:34 +0000 Subject: [PATCH] whack the ifdef pinata: OPENSSL_SYSNAME_VXWORKS OPENSSL_SYS_VMS OPENSSL_SYS_MSDOS OPENSSL_UNISTD OPENSSL_SYS_WIN16 WIN_CONSOLE_BUG OPENSSL_SYS_WINCE SGTTY OPENSSL_SYS_MACINTOSH_CLASSIC MAC_OS_GUSI_SOURCE OPENSSL_SYS_NETWARE OPENSSL_SYS_SUNOS __DJGPP__ OPENSSL_SYS_BEOS OPENSSL_SYS_WIN32 --- lib/libcrypto/ui/ui_openssl.c | 265 +------------------------- lib/libssl/src/crypto/ui/ui_openssl.c | 265 +------------------------- 2 files changed, 10 insertions(+), 520 deletions(-) diff --git a/lib/libcrypto/ui/ui_openssl.c b/lib/libcrypto/ui/ui_openssl.c index a38c7581e6a..6000c24b1cf 100644 --- a/lib/libcrypto/ui/ui_openssl.c +++ b/lib/libcrypto/ui/ui_openssl.c @@ -117,31 +117,12 @@ #include -/* need for #define _POSIX_C_SOURCE arises whenever you pass -ansi to gcc - * [maybe others?], because it masks interfaces not discussed in standard, - * sigaction and fileno included. -pedantic would be more appropriate for - * the intended purposes, but we can't prevent users from adding -ansi. - */ -#if defined(OPENSSL_SYSNAME_VXWORKS) -#include -#endif - -#if !defined(_POSIX_C_SOURCE) && defined(OPENSSL_SYS_VMS) -#ifndef _POSIX_C_SOURCE -#define _POSIX_C_SOURCE 2 -#endif -#endif #include #include #include #include -#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) -# ifdef OPENSSL_UNISTD -# include OPENSSL_UNISTD -# else -# include -# endif +#include /* If unistd.h defines _POSIX_VERSION, we conclude that we * are on a POSIX system and have sigaction and termios. */ # if defined(_POSIX_VERSION) @@ -152,74 +133,21 @@ # endif # endif -#endif -#ifdef WIN16TTY -# undef OPENSSL_SYS_WIN16 -# undef WIN16 -# undef _WINDOWS -# include -#endif - -/* 06-Apr-92 Luke Brennan Support for VMS */ #include "ui_locl.h" #include "cryptlib.h" -#ifdef OPENSSL_SYS_VMS /* prototypes for sys$whatever */ -# include -# ifdef __DECC -# pragma message disable DOLLARID -# endif -#endif - -#ifdef WIN_CONSOLE_BUG -# include -#ifndef OPENSSL_SYS_WINCE -# include -#endif -#endif - /* There are 5 types of terminal interface supported, * TERMIO, TERMIOS, VMS, MSDOS and SGTTY */ -#if defined(__sgi) && !defined(TERMIOS) -# define TERMIOS -# undef TERMIO -# undef SGTTY -#endif - -#if defined(linux) && !defined(TERMIO) -# undef TERMIOS -# define TERMIO -# undef SGTTY -#endif - #ifdef _LIBC # undef TERMIOS # define TERMIO # undef SGTTY #endif -#if !defined(TERMIO) && !defined(TERMIOS) && !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(MAC_OS_GUSI_SOURCE) -# undef TERMIOS -# undef TERMIO -# define SGTTY -#endif - -#if defined(OPENSSL_SYS_VXWORKS) -#undef TERMIOS -#undef TERMIO -#undef SGTTY -#endif - -#if defined(OPENSSL_SYS_NETWARE) -#undef TERMIOS -#undef TERMIO -#undef SGTTY -#endif - #ifdef TERMIOS # include # define TTY_STRUCT struct termios @@ -236,46 +164,7 @@ # define TTY_set(tty,data) ioctl(tty,TCSETA,data) #endif -#ifdef SGTTY -# include -# define TTY_STRUCT struct sgttyb -# define TTY_FLAGS sg_flags -# define TTY_get(tty,data) ioctl(tty,TIOCGETP,data) -# define TTY_set(tty,data) ioctl(tty,TIOCSETP,data) -#endif - -#if !defined(_LIBC) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_SUNOS) # include -#endif - -#ifdef OPENSSL_SYS_MSDOS -# include -#endif - -#ifdef OPENSSL_SYS_VMS -# include -# include -# include -# include -struct IOSB { - short iosb$w_value; - short iosb$w_count; - long iosb$l_info; - }; -#endif - -#ifdef OPENSSL_SYS_SUNOS - typedef int sig_atomic_t; -#endif - -#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(MAC_OS_GUSI_SOURCE) || defined(OPENSSL_SYS_NETWARE) -/* - * This one needs work. As a matter of fact the code is unoperational - * and this is only a trick to get it compiled. - * - */ -# define TTY_STRUCT int -#endif #ifndef NX509_SIG # define NX509_SIG 32 @@ -289,30 +178,15 @@ static struct sigaction savsig[NX509_SIG]; static void (*savsig[NX509_SIG])(int ); #endif -#ifdef OPENSSL_SYS_VMS -static struct IOSB iosb; -static $DESCRIPTOR(terminal,"TT"); -static long tty_orig[3], tty_new[3]; /* XXX Is there any guarantee that this will always suffice for the actual structures? */ -static long status; -static unsigned short channel = 0; -#else -#if !defined(OPENSSL_SYS_MSDOS) || defined(__DJGPP__) static TTY_STRUCT tty_orig,tty_new; -#endif -#endif static FILE *tty_in, *tty_out; static int is_a_tty; /* Declare static functions */ -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) static int read_till_nl(FILE *); static void recsig(int); static void pushsig(void); static void popsig(void); -#endif -#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN16) -static int noecho_fgets(char *buf, int size, FILE *tty); -#endif static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl); static int read_string(UI *ui, UI_STRING *uis); @@ -396,7 +270,6 @@ static int read_string(UI *ui, UI_STRING *uis) } -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) /* Internal functions to read a string without echoing */ static int read_till_nl(FILE *in) { @@ -411,7 +284,6 @@ static int read_till_nl(FILE *in) } static volatile sig_atomic_t intr_signal; -#endif static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) { @@ -419,7 +291,6 @@ static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) int ok; char result[BUFSIZ]; int maxsize = BUFSIZ-1; -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) char *p; intr_signal=0; @@ -434,17 +305,7 @@ static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) ps=2; result[0]='\0'; -#ifdef OPENSSL_SYS_MSDOS - if (!echo) - { - noecho_fgets(result,maxsize,tty_in); - p=result; /* FIXME: noecho_fgets doesn't return errors */ - } - else - p=fgets(result,maxsize,tty_in); -#else p=fgets(result,maxsize,tty_in); -#endif if(!p) goto error; if (feof(tty_in)) goto error; @@ -469,9 +330,6 @@ error: if (ps >= 1) popsig(); -#else - ok=1; -#endif OPENSSL_cleanse(result,BUFSIZ); return ok; @@ -484,46 +342,25 @@ static int open_console(UI *ui) CRYPTO_w_lock(CRYPTO_LOCK_UI); is_a_tty = 1; -#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS) - tty_in=stdin; - tty_out=stderr; -#else -# ifdef OPENSSL_SYS_MSDOS -# define DEV_TTY "con" -# else # define DEV_TTY "/dev/tty" -# endif if ((tty_in=fopen(DEV_TTY,"r")) == NULL) tty_in=stdin; if ((tty_out=fopen(DEV_TTY,"w")) == NULL) tty_out=stderr; -#endif -#if defined(TTY_get) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_get) if (TTY_get(fileno(tty_in),&tty_orig) == -1) { -#ifdef ENOTTY if (errno == ENOTTY) is_a_tty=0; else -#endif -#ifdef EINVAL /* Ariel Glenn ariel@columbia.edu reports that solaris * can return EINVAL instead. This should be ok */ if (errno == EINVAL) is_a_tty=0; else -#endif return 0; } -#endif -#ifdef OPENSSL_SYS_VMS - status = sys$assign(&terminal,&channel,0,0); - if (status != SS$_NORMAL) - return 0; - status=sys$qiow(0,channel,IO$_SENSEMODE,&iosb,0,0,tty_orig,12,0,0,0,0); - if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) - return 0; #endif return 1; } @@ -535,39 +372,23 @@ static int noecho_console(UI *ui) tty_new.TTY_FLAGS &= ~ECHO; #endif -#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_set) if (is_a_tty && (TTY_set(fileno(tty_in),&tty_new) == -1)) return 0; -#endif -#ifdef OPENSSL_SYS_VMS - tty_new[0] = tty_orig[0]; - tty_new[1] = tty_orig[1] | TT$M_NOECHO; - tty_new[2] = tty_orig[2]; - status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0); - if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) - return 0; #endif return 1; } static int echo_console(UI *ui) { -#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_set) memcpy(&(tty_new),&(tty_orig),sizeof(tty_orig)); tty_new.TTY_FLAGS |= ECHO; #endif -#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_set) if (is_a_tty && (TTY_set(fileno(tty_in),&tty_new) == -1)) return 0; -#endif -#ifdef OPENSSL_SYS_VMS - tty_new[0] = tty_orig[0]; - tty_new[1] = tty_orig[1] & ~TT$M_NOECHO; - tty_new[2] = tty_orig[2]; - status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0); - if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) - return 0; #endif return 1; } @@ -576,22 +397,16 @@ static int close_console(UI *ui) { if (tty_in != stdin) fclose(tty_in); if (tty_out != stderr) fclose(tty_out); -#ifdef OPENSSL_SYS_VMS - status = sys$dassgn(channel); -#endif CRYPTO_w_unlock(CRYPTO_LOCK_UI); return 1; } -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) /* Internal functions to handle signals and act on them */ static void pushsig(void) { -#ifndef OPENSSL_SYS_WIN32 int i; -#endif #ifdef SIGACTION struct sigaction sa; @@ -599,14 +414,6 @@ static void pushsig(void) sa.sa_handler=recsig; #endif -#ifdef OPENSSL_SYS_WIN32 - savsig[SIGABRT]=signal(SIGABRT,recsig); - savsig[SIGFPE]=signal(SIGFPE,recsig); - savsig[SIGILL]=signal(SIGILL,recsig); - savsig[SIGINT]=signal(SIGINT,recsig); - savsig[SIGSEGV]=signal(SIGSEGV,recsig); - savsig[SIGTERM]=signal(SIGTERM,recsig); -#else for (i=1; i -/* need for #define _POSIX_C_SOURCE arises whenever you pass -ansi to gcc - * [maybe others?], because it masks interfaces not discussed in standard, - * sigaction and fileno included. -pedantic would be more appropriate for - * the intended purposes, but we can't prevent users from adding -ansi. - */ -#if defined(OPENSSL_SYSNAME_VXWORKS) -#include -#endif - -#if !defined(_POSIX_C_SOURCE) && defined(OPENSSL_SYS_VMS) -#ifndef _POSIX_C_SOURCE -#define _POSIX_C_SOURCE 2 -#endif -#endif #include #include #include #include -#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) -# ifdef OPENSSL_UNISTD -# include OPENSSL_UNISTD -# else -# include -# endif +#include /* If unistd.h defines _POSIX_VERSION, we conclude that we * are on a POSIX system and have sigaction and termios. */ # if defined(_POSIX_VERSION) @@ -152,74 +133,21 @@ # endif # endif -#endif -#ifdef WIN16TTY -# undef OPENSSL_SYS_WIN16 -# undef WIN16 -# undef _WINDOWS -# include -#endif - -/* 06-Apr-92 Luke Brennan Support for VMS */ #include "ui_locl.h" #include "cryptlib.h" -#ifdef OPENSSL_SYS_VMS /* prototypes for sys$whatever */ -# include -# ifdef __DECC -# pragma message disable DOLLARID -# endif -#endif - -#ifdef WIN_CONSOLE_BUG -# include -#ifndef OPENSSL_SYS_WINCE -# include -#endif -#endif - /* There are 5 types of terminal interface supported, * TERMIO, TERMIOS, VMS, MSDOS and SGTTY */ -#if defined(__sgi) && !defined(TERMIOS) -# define TERMIOS -# undef TERMIO -# undef SGTTY -#endif - -#if defined(linux) && !defined(TERMIO) -# undef TERMIOS -# define TERMIO -# undef SGTTY -#endif - #ifdef _LIBC # undef TERMIOS # define TERMIO # undef SGTTY #endif -#if !defined(TERMIO) && !defined(TERMIOS) && !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(MAC_OS_GUSI_SOURCE) -# undef TERMIOS -# undef TERMIO -# define SGTTY -#endif - -#if defined(OPENSSL_SYS_VXWORKS) -#undef TERMIOS -#undef TERMIO -#undef SGTTY -#endif - -#if defined(OPENSSL_SYS_NETWARE) -#undef TERMIOS -#undef TERMIO -#undef SGTTY -#endif - #ifdef TERMIOS # include # define TTY_STRUCT struct termios @@ -236,46 +164,7 @@ # define TTY_set(tty,data) ioctl(tty,TCSETA,data) #endif -#ifdef SGTTY -# include -# define TTY_STRUCT struct sgttyb -# define TTY_FLAGS sg_flags -# define TTY_get(tty,data) ioctl(tty,TIOCGETP,data) -# define TTY_set(tty,data) ioctl(tty,TIOCSETP,data) -#endif - -#if !defined(_LIBC) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_SUNOS) # include -#endif - -#ifdef OPENSSL_SYS_MSDOS -# include -#endif - -#ifdef OPENSSL_SYS_VMS -# include -# include -# include -# include -struct IOSB { - short iosb$w_value; - short iosb$w_count; - long iosb$l_info; - }; -#endif - -#ifdef OPENSSL_SYS_SUNOS - typedef int sig_atomic_t; -#endif - -#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(MAC_OS_GUSI_SOURCE) || defined(OPENSSL_SYS_NETWARE) -/* - * This one needs work. As a matter of fact the code is unoperational - * and this is only a trick to get it compiled. - * - */ -# define TTY_STRUCT int -#endif #ifndef NX509_SIG # define NX509_SIG 32 @@ -289,30 +178,15 @@ static struct sigaction savsig[NX509_SIG]; static void (*savsig[NX509_SIG])(int ); #endif -#ifdef OPENSSL_SYS_VMS -static struct IOSB iosb; -static $DESCRIPTOR(terminal,"TT"); -static long tty_orig[3], tty_new[3]; /* XXX Is there any guarantee that this will always suffice for the actual structures? */ -static long status; -static unsigned short channel = 0; -#else -#if !defined(OPENSSL_SYS_MSDOS) || defined(__DJGPP__) static TTY_STRUCT tty_orig,tty_new; -#endif -#endif static FILE *tty_in, *tty_out; static int is_a_tty; /* Declare static functions */ -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) static int read_till_nl(FILE *); static void recsig(int); static void pushsig(void); static void popsig(void); -#endif -#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN16) -static int noecho_fgets(char *buf, int size, FILE *tty); -#endif static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl); static int read_string(UI *ui, UI_STRING *uis); @@ -396,7 +270,6 @@ static int read_string(UI *ui, UI_STRING *uis) } -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) /* Internal functions to read a string without echoing */ static int read_till_nl(FILE *in) { @@ -411,7 +284,6 @@ static int read_till_nl(FILE *in) } static volatile sig_atomic_t intr_signal; -#endif static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) { @@ -419,7 +291,6 @@ static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) int ok; char result[BUFSIZ]; int maxsize = BUFSIZ-1; -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) char *p; intr_signal=0; @@ -434,17 +305,7 @@ static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) ps=2; result[0]='\0'; -#ifdef OPENSSL_SYS_MSDOS - if (!echo) - { - noecho_fgets(result,maxsize,tty_in); - p=result; /* FIXME: noecho_fgets doesn't return errors */ - } - else - p=fgets(result,maxsize,tty_in); -#else p=fgets(result,maxsize,tty_in); -#endif if(!p) goto error; if (feof(tty_in)) goto error; @@ -469,9 +330,6 @@ error: if (ps >= 1) popsig(); -#else - ok=1; -#endif OPENSSL_cleanse(result,BUFSIZ); return ok; @@ -484,46 +342,25 @@ static int open_console(UI *ui) CRYPTO_w_lock(CRYPTO_LOCK_UI); is_a_tty = 1; -#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS) - tty_in=stdin; - tty_out=stderr; -#else -# ifdef OPENSSL_SYS_MSDOS -# define DEV_TTY "con" -# else # define DEV_TTY "/dev/tty" -# endif if ((tty_in=fopen(DEV_TTY,"r")) == NULL) tty_in=stdin; if ((tty_out=fopen(DEV_TTY,"w")) == NULL) tty_out=stderr; -#endif -#if defined(TTY_get) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_get) if (TTY_get(fileno(tty_in),&tty_orig) == -1) { -#ifdef ENOTTY if (errno == ENOTTY) is_a_tty=0; else -#endif -#ifdef EINVAL /* Ariel Glenn ariel@columbia.edu reports that solaris * can return EINVAL instead. This should be ok */ if (errno == EINVAL) is_a_tty=0; else -#endif return 0; } -#endif -#ifdef OPENSSL_SYS_VMS - status = sys$assign(&terminal,&channel,0,0); - if (status != SS$_NORMAL) - return 0; - status=sys$qiow(0,channel,IO$_SENSEMODE,&iosb,0,0,tty_orig,12,0,0,0,0); - if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) - return 0; #endif return 1; } @@ -535,39 +372,23 @@ static int noecho_console(UI *ui) tty_new.TTY_FLAGS &= ~ECHO; #endif -#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_set) if (is_a_tty && (TTY_set(fileno(tty_in),&tty_new) == -1)) return 0; -#endif -#ifdef OPENSSL_SYS_VMS - tty_new[0] = tty_orig[0]; - tty_new[1] = tty_orig[1] | TT$M_NOECHO; - tty_new[2] = tty_orig[2]; - status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0); - if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) - return 0; #endif return 1; } static int echo_console(UI *ui) { -#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_set) memcpy(&(tty_new),&(tty_orig),sizeof(tty_orig)); tty_new.TTY_FLAGS |= ECHO; #endif -#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_set) if (is_a_tty && (TTY_set(fileno(tty_in),&tty_new) == -1)) return 0; -#endif -#ifdef OPENSSL_SYS_VMS - tty_new[0] = tty_orig[0]; - tty_new[1] = tty_orig[1] & ~TT$M_NOECHO; - tty_new[2] = tty_orig[2]; - status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0); - if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) - return 0; #endif return 1; } @@ -576,22 +397,16 @@ static int close_console(UI *ui) { if (tty_in != stdin) fclose(tty_in); if (tty_out != stderr) fclose(tty_out); -#ifdef OPENSSL_SYS_VMS - status = sys$dassgn(channel); -#endif CRYPTO_w_unlock(CRYPTO_LOCK_UI); return 1; } -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) /* Internal functions to handle signals and act on them */ static void pushsig(void) { -#ifndef OPENSSL_SYS_WIN32 int i; -#endif #ifdef SIGACTION struct sigaction sa; @@ -599,14 +414,6 @@ static void pushsig(void) sa.sa_handler=recsig; #endif -#ifdef OPENSSL_SYS_WIN32 - savsig[SIGABRT]=signal(SIGABRT,recsig); - savsig[SIGFPE]=signal(SIGFPE,recsig); - savsig[SIGILL]=signal(SIGILL,recsig); - savsig[SIGINT]=signal(SIGINT,recsig); - savsig[SIGSEGV]=signal(SIGSEGV,recsig); - savsig[SIGTERM]=signal(SIGTERM,recsig); -#else for (i=1; i