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 | 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 | 415 | dnl --------------------------------------------------------------------------- |
| 402 | 416 | dnl Check for pic |
| 403 | 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 | 151 | |
| 152 | 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 | 155 | return rc; |
| 158 | 156 | } |
| 159 | 157 | #ifdef _WIN32 |
| ... | ... | @@ -162,9 +160,7 @@ static int notify_crl_error(H3270 *hSession, int rc, const SSL_ERROR_MESSAGE *me |
| 162 | 160 | lib3270_autoptr(char) windows_error = lib3270_win32_translate_error_code(message->lasterror); |
| 163 | 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 | 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 | 170 | lib3270_autoptr(char) formatted_error = lib3270_strdup_printf(_( "%s (SSL error %d)" ),ERR_reason_error_string(message->error),message->error); |
| 175 | 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 | 174 | return rc; |
| 179 | 175 | } |
| 180 | 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 | 179 | return rc; |
| 184 | 180 | } |
| 185 | 181 | ... | ... |
src/include/config.h.in
src/include/lib3270-internals.h
| ... | ... | @@ -809,6 +809,12 @@ LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on); |
| 809 | 809 | */ |
| 810 | 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 | 818 | #ifdef SSL_ENABLE_CRL_CHECK |
| 813 | 819 | LIB3270_INTERNAL X509_CRL * lib3270_get_crl(H3270 *hSession, SSL_ERROR_MESSAGE * message, const char *url); |
| 814 | 820 | #endif // SSL_ENABLE_CRL_CHECK | ... | ... |
src/ssl/negotiate.c
| ... | ... | @@ -292,9 +292,9 @@ int ssl_negotiate(H3270 *hSession) |
| 292 | 292 | int abort = -1; |
| 293 | 293 | |
| 294 | 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 | 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 | 299 | if(abort) |
| 300 | 300 | { |
| ... | ... | @@ -434,3 +434,35 @@ void ssl_info_callback(INFO_CONST SSL *s, int where, int ret) |
| 434 | 434 | |
| 435 | 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 | +} | ... | ... |