Commit 49844486 authored by Richard Levitte's avatar Richard Levitte
Browse files

In UI_OpenSSL's open(), generate an error on unknown errno



TTY_get() sometimes surprises us with new errno values to determine if
we have a controling terminal or not.  This generated error is a
helpful tool to figure out that this was what happened and what the
unknown value is.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2043)
parent 57c0f378
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ static ERR_STRING_DATA ERR_str_libraries[] = {
    {ERR_PACK(ERR_LIB_TS, 0, 0), "time stamp routines"},
    {ERR_PACK(ERR_LIB_ENGINE, 0, 0), "engine routines"},
    {ERR_PACK(ERR_LIB_OCSP, 0, 0), "OCSP routines"},
    {ERR_PACK(ERR_LIB_UI, 0, 0), "UI routines"},
    {ERR_PACK(ERR_LIB_FIPS, 0, 0), "FIPS routines"},
    {ERR_PACK(ERR_LIB_CMS, 0, 0), "CMS routines"},
    {ERR_PACK(ERR_LIB_HMAC, 0, 0), "HMAC routines"},
+3 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
static ERR_STRING_DATA UI_str_functs[] = {
    {ERR_FUNC(UI_F_GENERAL_ALLOCATE_BOOLEAN), "general_allocate_boolean"},
    {ERR_FUNC(UI_F_GENERAL_ALLOCATE_PROMPT), "general_allocate_prompt"},
    {ERR_FUNC(UI_F_OPEN_CONSOLE), "open_console"},
    {ERR_FUNC(UI_F_UI_CREATE_METHOD), "UI_create_method"},
    {ERR_FUNC(UI_F_UI_CTRL), "UI_ctrl"},
    {ERR_FUNC(UI_F_UI_DUP_ERROR_STRING), "UI_dup_error_string"},
@@ -45,6 +46,8 @@ static ERR_STRING_DATA UI_str_reasons[] = {
    {ERR_REASON(UI_R_RESULT_TOO_LARGE), "result too large"},
    {ERR_REASON(UI_R_RESULT_TOO_SMALL), "result too small"},
    {ERR_REASON(UI_R_UNKNOWN_CONTROL_COMMAND), "unknown control command"},
    {ERR_REASON(UI_R_UNKNOWN_TTYGET_ERRNO_VALUE),
     "unknown ttyget errno value"},
    {0, NULL}
};

+9 −1
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
 */

#include <openssl/e_os2.h>
#include <openssl/err.h>

/*
 * need for #define _POSIX_C_SOURCE arises whenever you pass -ansi to gcc
@@ -428,8 +429,15 @@ static int open_console(UI *ui)
            is_a_tty = 0;
        else
# endif
            {
                char tmp_num[10];
                BIO_snprintf(tmp_num, sizeof(tmp_num) - 1, "%d", errno);
                UIerr(UI_F_OPEN_CONSOLE, UI_R_UNKNOWN_TTYGET_ERRNO_VALUE);
                ERR_add_error_data(2, "errno=", tmp_num);

                return 0;
            }
    }
#endif
#ifdef OPENSSL_SYS_VMS
    status = sys$assign(&terminal, &channel, 0, 0);
+2 −0
Original line number Diff line number Diff line
@@ -341,6 +341,7 @@ int ERR_load_UI_strings(void);
/* Function codes. */
# define UI_F_GENERAL_ALLOCATE_BOOLEAN                    108
# define UI_F_GENERAL_ALLOCATE_PROMPT                     109
# define UI_F_OPEN_CONSOLE                                114
# define UI_F_UI_CREATE_METHOD                            112
# define UI_F_UI_CTRL                                     111
# define UI_F_UI_DUP_ERROR_STRING                         101
@@ -362,6 +363,7 @@ int ERR_load_UI_strings(void);
# define UI_R_RESULT_TOO_LARGE                            100
# define UI_R_RESULT_TOO_SMALL                            101
# define UI_R_UNKNOWN_CONTROL_COMMAND                     106
# define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE                  108

#  ifdef  __cplusplus
}