Commit bbc56d7aebfd23749358ef33641d39a02992c0af
1 parent
7a080aaa
Exists in
master
and in
3 other branches
Adding build option to disable SSL erro notifications.
Showing
5 changed files
with
59 additions
and
10 deletions
Show diff stats
configure.ac
| @@ -398,6 +398,20 @@ AC_ARG_WITH([default-crl-url], | @@ -398,6 +398,20 @@ AC_ARG_WITH([default-crl-url], | ||
| 398 | AC_MSG_NOTICE(No default crl url) | 398 | AC_MSG_NOTICE(No default crl url) |
| 399 | ]) | 399 | ]) |
| 400 | 400 | ||
| 401 | +AC_ARG_ENABLE([ssl-error-notification], | ||
| 402 | + [AS_HELP_STRING([--disable-ssl-error-notification], [Disable notifications when the security negotiation fails])], | ||
| 403 | +[ | ||
| 404 | + app_cv_enable_ssl_notification="$enableval" | ||
| 405 | +],[ | ||
| 406 | + app_cv_enable_ssl_notification="yes" | ||
| 407 | +]) | ||
| 408 | + | ||
| 409 | +if test "$app_cv_enable_ssl_notification" == "yes"; then | ||
| 410 | + AC_DEFINE(SSL_ENABLE_NOTIFICATION_WHEN_FAILED) | ||
| 411 | +else | ||
| 412 | + AC_MSG_NOTICE(No notifications when SSL negotiation fails) | ||
| 413 | +fi | ||
| 414 | + | ||
| 401 | dnl --------------------------------------------------------------------------- | 415 | dnl --------------------------------------------------------------------------- |
| 402 | dnl Check for pic | 416 | dnl Check for pic |
| 403 | dnl --------------------------------------------------------------------------- | 417 | dnl --------------------------------------------------------------------------- |
src/core/connect.c
| @@ -151,9 +151,7 @@ static int notify_crl_error(H3270 *hSession, int rc, const SSL_ERROR_MESSAGE *me | @@ -151,9 +151,7 @@ static int notify_crl_error(H3270 *hSession, int rc, const SSL_ERROR_MESSAGE *me | ||
| 151 | 151 | ||
| 152 | if(message->description) | 152 | if(message->description) |
| 153 | { | 153 | { |
| 154 | - lib3270_write_log(hSession,"SSL-CRL-GET","%s",message->description); | ||
| 155 | - | ||
| 156 | - if(hSession->cbk.popup_ssl_error(hSession,rc,message->title,message->text,message->description)) | 154 | + if(popup_ssl_error(hSession,rc,message->title,message->text,message->description)) |
| 157 | return rc; | 155 | return rc; |
| 158 | } | 156 | } |
| 159 | #ifdef _WIN32 | 157 | #ifdef _WIN32 |
| @@ -162,9 +160,7 @@ static int notify_crl_error(H3270 *hSession, int rc, const SSL_ERROR_MESSAGE *me | @@ -162,9 +160,7 @@ static int notify_crl_error(H3270 *hSession, int rc, const SSL_ERROR_MESSAGE *me | ||
| 162 | lib3270_autoptr(char) windows_error = lib3270_win32_translate_error_code(message->lasterror); | 160 | lib3270_autoptr(char) windows_error = lib3270_win32_translate_error_code(message->lasterror); |
| 163 | lib3270_autoptr(char) formatted_error = lib3270_strdup_printf(_( "Windows error was \"%s\" (%u)" ), windows_error,(unsigned int) message->lasterror); | 161 | lib3270_autoptr(char) formatted_error = lib3270_strdup_printf(_( "Windows error was \"%s\" (%u)" ), windows_error,(unsigned int) message->lasterror); |
| 164 | 162 | ||
| 165 | - lib3270_write_log(hSession,"SSL-CRL-GET","%s (lasterror=%u - %s)",message->text,(unsigned int) message->lasterror, windows_error); | ||
| 166 | - | ||
| 167 | - if(hSession->cbk.popup_ssl_error(hSession,rc,message->title,message->text,formatted_error)) | 163 | + if(popup_ssl_error(hSession,rc,message->title,message->text,formatted_error)) |
| 168 | return rc; | 164 | return rc; |
| 169 | 165 | ||
| 170 | } | 166 | } |
| @@ -174,12 +170,12 @@ static int notify_crl_error(H3270 *hSession, int rc, const SSL_ERROR_MESSAGE *me | @@ -174,12 +170,12 @@ static int notify_crl_error(H3270 *hSession, int rc, const SSL_ERROR_MESSAGE *me | ||
| 174 | lib3270_autoptr(char) formatted_error = lib3270_strdup_printf(_( "%s (SSL error %d)" ),ERR_reason_error_string(message->error),message->error); | 170 | lib3270_autoptr(char) formatted_error = lib3270_strdup_printf(_( "%s (SSL error %d)" ),ERR_reason_error_string(message->error),message->error); |
| 175 | lib3270_write_log(hSession,"SSL-CRL-GET","%s",formatted_error); | 171 | lib3270_write_log(hSession,"SSL-CRL-GET","%s",formatted_error); |
| 176 | 172 | ||
| 177 | - if(hSession->cbk.popup_ssl_error(hSession,rc,message->title,message->text,formatted_error)) | 173 | + if(popup_ssl_error(hSession,rc,message->title,message->text,formatted_error)) |
| 178 | return rc; | 174 | return rc; |
| 179 | } | 175 | } |
| 180 | else | 176 | else |
| 181 | { | 177 | { |
| 182 | - if(hSession->cbk.popup_ssl_error(hSession,rc,message->title,message->text,"")) | 178 | + if(popup_ssl_error(hSession,rc,message->title,message->text,"")) |
| 183 | return rc; | 179 | return rc; |
| 184 | } | 180 | } |
| 185 | 181 |
src/include/config.h.in
| @@ -69,6 +69,7 @@ | @@ -69,6 +69,7 @@ | ||
| 69 | #undef SSL_ENABLE_CRL_CHECK | 69 | #undef SSL_ENABLE_CRL_CHECK |
| 70 | #undef SSL_ENABLE_CRL_EXPIRATION_CHECK | 70 | #undef SSL_ENABLE_CRL_EXPIRATION_CHECK |
| 71 | #undef SSL_DEFAULT_CRL_URL | 71 | #undef SSL_DEFAULT_CRL_URL |
| 72 | + #undef SSL_ENABLE_NOTIFICATION_WHEN_FAILED | ||
| 72 | 73 | ||
| 73 | /* Optional parts. */ | 74 | /* Optional parts. */ |
| 74 | #undef X3270_DBCS | 75 | #undef X3270_DBCS |
src/include/lib3270-internals.h
| @@ -809,6 +809,12 @@ LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on); | @@ -809,6 +809,12 @@ LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on); | ||
| 809 | */ | 809 | */ |
| 810 | LIB3270_INTERNAL int ssl_3270_ex_index; | 810 | LIB3270_INTERNAL int ssl_3270_ex_index; |
| 811 | 811 | ||
| 812 | + /** | ||
| 813 | + * @brief Emit popup on ssl error. | ||
| 814 | + * | ||
| 815 | + */ | ||
| 816 | + LIB3270_INTERNAL int popup_ssl_error(H3270 *session, int rc, const char *title, const char *summary, const char *body); | ||
| 817 | + | ||
| 812 | #ifdef SSL_ENABLE_CRL_CHECK | 818 | #ifdef SSL_ENABLE_CRL_CHECK |
| 813 | LIB3270_INTERNAL X509_CRL * lib3270_get_crl(H3270 *hSession, SSL_ERROR_MESSAGE * message, const char *url); | 819 | LIB3270_INTERNAL X509_CRL * lib3270_get_crl(H3270 *hSession, SSL_ERROR_MESSAGE * message, const char *url); |
| 814 | #endif // SSL_ENABLE_CRL_CHECK | 820 | #endif // SSL_ENABLE_CRL_CHECK |
src/ssl/negotiate.c
| @@ -292,9 +292,9 @@ int ssl_negotiate(H3270 *hSession) | @@ -292,9 +292,9 @@ int ssl_negotiate(H3270 *hSession) | ||
| 292 | int abort = -1; | 292 | int abort = -1; |
| 293 | 293 | ||
| 294 | if(msg.description) | 294 | if(msg.description) |
| 295 | - abort = hSession->cbk.popup_ssl_error(hSession,rc,msg.title,msg.text,msg.description); | 295 | + abort = popup_ssl_error(hSession,rc,msg.title,msg.text,msg.description); |
| 296 | else | 296 | else |
| 297 | - abort = hSession->cbk.popup_ssl_error(hSession,rc,msg.title,msg.text,ERR_reason_error_string(msg.error)); | 297 | + abort = popup_ssl_error(hSession,rc,msg.title,msg.text,ERR_reason_error_string(msg.error)); |
| 298 | 298 | ||
| 299 | if(abort) | 299 | if(abort) |
| 300 | { | 300 | { |
| @@ -434,3 +434,35 @@ void ssl_info_callback(INFO_CONST SSL *s, int where, int ret) | @@ -434,3 +434,35 @@ void ssl_info_callback(INFO_CONST SSL *s, int where, int ret) | ||
| 434 | 434 | ||
| 435 | #endif /*]*/ | 435 | #endif /*]*/ |
| 436 | 436 | ||
| 437 | +int popup_ssl_error(H3270 *hSession, int rc, const char *title, const char *summary, const char *body) | ||
| 438 | +{ | ||
| 439 | +#ifdef SSL_ENABLE_NOTIFICATION_WHEN_FAILED | ||
| 440 | + | ||
| 441 | + lib3270_write_log(hSession, "SSL", "%s", summary ); | ||
| 442 | + return hSession->cbk.popup_ssl_error(hSession,rc,title,summary,body); | ||
| 443 | + | ||
| 444 | +#else | ||
| 445 | + | ||
| 446 | + lib3270_autoptr(char) message = NULL; | ||
| 447 | + | ||
| 448 | + if(body && *body) | ||
| 449 | + message = lib3270_strdup_printf("%s - rc=%d",body,rc); | ||
| 450 | + else if(rc) | ||
| 451 | + message = lib3270_strdup_printf("%s (rc=%d)",strerror(rc),rc); | ||
| 452 | + else | ||
| 453 | + message = lib3270_strdup_printf("rc=%d",rc); | ||
| 454 | + | ||
| 455 | + lib3270_write_log( | ||
| 456 | + hSession, | ||
| 457 | + "SSL", | ||
| 458 | + "%s - %s - %s", | ||
| 459 | + title, | ||
| 460 | + summary, | ||
| 461 | + message | ||
| 462 | + ); | ||
| 463 | + | ||
| 464 | + | ||
| 465 | + return 0; | ||
| 466 | +#endif // SSL_ENABLE_NOTIFICATION_WHEN_FAILED | ||
| 467 | + | ||
| 468 | +} |