Commit ed85745ba265d3c5acaf4ecca9c5e931f9f36b66

Authored by Perry Werneck
2 parents ddf48c52 0c86c0a3

Merge branch 'develop' of https://github.com/PerryWerneck/lib3270 into develop

src/include/internals.h
@@ -801,6 +801,8 @@ LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on); @@ -801,6 +801,8 @@ LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on);
801 DWORD lasterror; 801 DWORD lasterror;
802 #endif // _WIN32 802 #endif // _WIN32
803 803
  804 + const char *body;
  805 +
804 const LIB3270_POPUP *popup; /// @brief Pointer to popup message. 806 const LIB3270_POPUP *popup; /// @brief Pointer to popup message.
805 807
806 } SSL_ERROR_MESSAGE; 808 } SSL_ERROR_MESSAGE;
src/ssl/notify.c
@@ -59,14 +59,16 @@ static LIB3270_POPUP * translate_ssl_error_message(const SSL_ERROR_MESSAGE *msg, @@ -59,14 +59,16 @@ static LIB3270_POPUP * translate_ssl_error_message(const SSL_ERROR_MESSAGE *msg,
59 59
60 printf("\n\nMSG-CODE=%d\n\n",msg->code); 60 printf("\n\nMSG-CODE=%d\n\n",msg->code);
61 61
  62 + const char *body = (msg->body ? msg->body : msg->popup->body);
  63 +
62 if(msg->code) 64 if(msg->code)
63 { 65 {
64 - if(msg->popup->body) 66 + if(body)
65 { 67 {
66 popup = lib3270_popup_clone_printf( 68 popup = lib3270_popup_clone_printf(
67 msg->popup, 69 msg->popup,
68 _( "%s\nThe SSL error message was \"%s\"(%d)" ), 70 _( "%s\nThe SSL error message was \"%s\"(%d)" ),
69 - dgettext(GETTEXT_PACKAGE,msg->popup->body), 71 + dgettext(GETTEXT_PACKAGE,body),
70 ERR_reason_error_string(msg->code), 72 ERR_reason_error_string(msg->code),
71 msg->code 73 msg->code
72 ); 74 );
@@ -87,12 +89,12 @@ static LIB3270_POPUP * translate_ssl_error_message(const SSL_ERROR_MESSAGE *msg, @@ -87,12 +89,12 @@ static LIB3270_POPUP * translate_ssl_error_message(const SSL_ERROR_MESSAGE *msg,
87 { 89 {
88 lib3270_autoptr(char) windows_error = lib3270_win32_translate_error_code(msg->lasterror); 90 lib3270_autoptr(char) windows_error = lib3270_win32_translate_error_code(msg->lasterror);
89 91
90 - if(msg->popup->body) 92 + if(body)
91 { 93 {
92 popup = lib3270_popup_clone_printf( 94 popup = lib3270_popup_clone_printf(
93 msg->popup, 95 msg->popup,
94 _( "%s\nThe windows error was \"%s\" (%u)" ), 96 _( "%s\nThe windows error was \"%s\" (%u)" ),
95 - dgettext(GETTEXT_PACKAGE,msg->popup->body), 97 + dgettext(GETTEXT_PACKAGE,body),
96 windows_error, 98 windows_error,
97 (unsigned int) msg->lasterror 99 (unsigned int) msg->lasterror
98 ); 100 );
@@ -111,12 +113,12 @@ static LIB3270_POPUP * translate_ssl_error_message(const SSL_ERROR_MESSAGE *msg, @@ -111,12 +113,12 @@ static LIB3270_POPUP * translate_ssl_error_message(const SSL_ERROR_MESSAGE *msg,
111 #endif // _WIN32 113 #endif // _WIN32
112 else if(rc) 114 else if(rc)
113 { 115 {
114 - if(msg->popup->body) 116 + if(body)
115 { 117 {
116 popup = lib3270_popup_clone_printf( 118 popup = lib3270_popup_clone_printf(
117 msg->popup, 119 msg->popup,
118 _( "%s\nThe operating system error was \"%s\" (%u)" ), 120 _( "%s\nThe operating system error was \"%s\" (%u)" ),
119 - dgettext(GETTEXT_PACKAGE,msg->popup->body), 121 + dgettext(GETTEXT_PACKAGE,body),
120 strerror(rc), 122 strerror(rc),
121 rc 123 rc
122 ); 124 );
@@ -137,8 +139,8 @@ static LIB3270_POPUP * translate_ssl_error_message(const SSL_ERROR_MESSAGE *msg, @@ -137,8 +139,8 @@ static LIB3270_POPUP * translate_ssl_error_message(const SSL_ERROR_MESSAGE *msg,
137 popup = lib3270_malloc(sizeof(LIB3270_POPUP)); 139 popup = lib3270_malloc(sizeof(LIB3270_POPUP));
138 *popup = *msg->popup; 140 *popup = *msg->popup;
139 141
140 - if(msg->popup->body)  
141 - popup->body = dgettext(GETTEXT_PACKAGE,msg->popup->body); 142 + if(body)
  143 + popup->body = dgettext(GETTEXT_PACKAGE,body);
142 144
143 } 145 }
144 146
src/ssl/windows/http.c
@@ -59,7 +59,7 @@ X509_CRL * get_crl_using_http(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -59,7 +59,7 @@ X509_CRL * get_crl_using_http(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
59 }; 59 };
60 60
61 popup.body = error_message; 61 popup.body = error_message;
62 - message->popup = error_message; 62 + message->popup = &popup;
63 message->code = hSession->ssl.error = 0; 63 message->code = hSession->ssl.error = 0;
64 trace_ssl( 64 trace_ssl(
65 hSession,"Can't get %s: %s\n", 65 hSession,"Can't get %s: %s\n",
src/ssl/windows/ldap.c
@@ -104,11 +104,14 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -104,11 +104,14 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
104 104
105 if(!base) 105 if(!base)
106 { 106 {
107 - message->error = hSession->ssl.error = 0;  
108 - message->title = _( "Security error" );  
109 - message->text = _( "No DN of the entry at which to start the search on the URL" );  
110 - message->description = _( "The URL argument should be in the format ldap://[HOST]/[DN]?attribute" );  
111 - debug("%s",message->text); 107 + static const LIB3270_POPUP popup = {
  108 + .summary = N_( "No DN of the entry at which to start the search on the URL" ),
  109 + .body = N_( "The URL argument should be in the format ldap://[HOST]/[DN]?attribute" )
  110 + };
  111 +
  112 + message->code = hSession->ssl.error = 0;
  113 + message->popup = &popup;
  114 + debug("%s",message->popup->summary);
112 errno = EINVAL; 115 errno = EINVAL;
113 return NULL; 116 return NULL;
114 } 117 }
@@ -118,11 +121,14 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -118,11 +121,14 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
118 121
119 if(!base) 122 if(!base)
120 { 123 {
121 - message->error = hSession->ssl.error = 0;  
122 - message->title = _( "Security error" );  
123 - message->text = _( "No LDAP attribute on the URL" );  
124 - message->description = _( "The URL argument should be in the format ldap://[HOST]/[DN]?attribute" );  
125 - debug("%s",message->text); 124 + static const LIB3270_POPUP popup = {
  125 + .summary = N_( "No LDAP attribute on the URL" ),
  126 + .body = N_( "The URL argument should be in the format ldap://[HOST]/[DN]?attribute" )
  127 + };
  128 +
  129 + message->code = hSession->ssl.error = 0;
  130 + message->popup = &popup;
  131 + debug("%s",message->popup->summary);
126 errno = EINVAL; 132 errno = EINVAL;
127 return NULL; 133 return NULL;
128 } 134 }
@@ -147,12 +153,15 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -147,12 +153,15 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
147 153
148 if(!ld) 154 if(!ld)
149 { 155 {
150 - message->error = hSession->ssl.error = 0;  
151 - message->title = _( "Security error" );  
152 - message->text = _( "Can't initialize LDAP" );  
153 - debug("%s",message->text); 156 + static const LIB3270_POPUP popup = {
  157 + .summary = N_( "Can't initialize LDAP" )
  158 + };
  159 +
  160 + message->code = hSession->ssl.error = 0;
  161 + message->popup = &popup;
  162 +
  163 + debug("%s",message->popup->summary);
154 message->lasterror = GetLastError(); 164 message->lasterror = GetLastError();
155 - message->description = NULL;  
156 errno = EINVAL; 165 errno = EINVAL;
157 return NULL; 166 return NULL;
158 } 167 }
@@ -161,11 +170,13 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -161,11 +170,13 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
161 rc = ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &version); 170 rc = ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &version);
162 if(rc != LDAP_SUCCESS) 171 if(rc != LDAP_SUCCESS)
163 { 172 {
164 - message->error = hSession->ssl.error = 0;  
165 - message->title = _( "Security error" );  
166 - message->text = _( "Can't set LDAP protocol version" ); 173 + static const LIB3270_POPUP popup = {
  174 + .summary = N_( "Can't set LDAP protocol version" )
  175 + };
  176 +
  177 + message->code = hSession->ssl.error = 0;
  178 + message->popup = &popup;
167 message->lasterror = LdapMapErrorToWin32(rc); 179 message->lasterror = LdapMapErrorToWin32(rc);
168 - message->description = NULL;  
169 180
170 debug("%s (rc=%u, lasterror=%d)",ldap_err2string(rc),rc,(unsigned int) message->lasterror); 181 debug("%s (rc=%u, lasterror=%d)",ldap_err2string(rc),rc,(unsigned int) message->lasterror);
171 182
@@ -176,11 +187,13 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -176,11 +187,13 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
176 rc = ldap_simple_bind_s(ld, NULL, NULL); 187 rc = ldap_simple_bind_s(ld, NULL, NULL);
177 if(rc != LDAP_SUCCESS) 188 if(rc != LDAP_SUCCESS)
178 { 189 {
179 - message->error = hSession->ssl.error = 0;  
180 - message->title = _( "Security error" );  
181 - message->text = _( "Can't bind to LDAP server" ); 190 + static const LIB3270_POPUP popup = {
  191 + .summary = N_( "Can't bind to LDAP server" )
  192 + };
  193 +
  194 + message->code = hSession->ssl.error = 0;
  195 + message->popup = &popup;
182 message->lasterror = LdapMapErrorToWin32(rc); 196 message->lasterror = LdapMapErrorToWin32(rc);
183 - message->description = NULL;  
184 197
185 debug("%s (rc=%u, lasterror=%d)",ldap_err2string(rc),rc,(unsigned int) message->lasterror); 198 debug("%s (rc=%u, lasterror=%d)",ldap_err2string(rc),rc,(unsigned int) message->lasterror);
186 199
@@ -206,11 +219,12 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -206,11 +219,12 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
206 219
207 if(rc != LDAP_SUCCESS) 220 if(rc != LDAP_SUCCESS)
208 { 221 {
209 - message->error = hSession->ssl.error = 0;  
210 - message->title = _( "Security error" );  
211 - message->text = _( "Can't search LDAP server" );  
212 - message->description = ldap_err2string(rc);  
213 - lib3270_write_log(hSession,"ssl","%s: %s",url, message->description); 222 + static const LIB3270_POPUP popup = {
  223 + .summary = N_( "Can't search LDAP server" )
  224 + };
  225 + message->body = ldap_err2string(rc);
  226 + message->popup = &popup;
  227 + lib3270_write_log(hSession,"ssl","%s: %s",url, message->body);
214 return NULL; 228 return NULL;
215 } 229 }
216 230
@@ -218,11 +232,14 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -218,11 +232,14 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
218 char __attribute__ ((__cleanup__(lib3270_autoptr_cleanup_LDAPPTR))) *attr = ldap_first_attribute(ld, results, &ber); 232 char __attribute__ ((__cleanup__(lib3270_autoptr_cleanup_LDAPPTR))) *attr = ldap_first_attribute(ld, results, &ber);
219 if(!attr) 233 if(!attr)
220 { 234 {
221 - message->error = hSession->ssl.error = 0;  
222 - message->title = _( "Security error" );  
223 - message->text = _( "Can't get LDAP attribute" );  
224 - message->description = _("Search did not produce any attributes.");  
225 - lib3270_write_log(hSession,"ssl","%s: %s",url, message->description); 235 + static const LIB3270_POPUP popup = {
  236 + .summary = N_( "Can't get LDAP attribute" ),
  237 + .body = N_("Search did not produce any attributes.")
  238 + };
  239 +
  240 + message->code = hSession->ssl.error = 0;
  241 + message->popup = &popup;
  242 + lib3270_write_log(hSession,"ssl","%s: %s",url, message->popup->body);
226 errno = ENOENT; 243 errno = ENOENT;
227 return NULL; 244 return NULL;
228 } 245 }
@@ -230,11 +247,13 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -230,11 +247,13 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
230 struct berval ** value = ldap_get_values_len(ld, results, attr); 247 struct berval ** value = ldap_get_values_len(ld, results, attr);
231 if(!value) 248 if(!value)
232 { 249 {
233 - message->error = hSession->ssl.error = 0;  
234 - message->title = _( "Security error" );  
235 - message->text = _( "Can't get LDAP attribute" );  
236 - message->description = _("Search did not produce any values.");  
237 - lib3270_write_log(hSession,"ssl","%s: %s",url, message->description); 250 + static const LIB3270_POPUP popup = {
  251 + .summary = N_( "Can't get LDAP attribute" ),
  252 + .body = N_("Search did not produce any values.")
  253 + };
  254 + message->code = hSession->ssl.error = 0;
  255 + message->popup = &popup;
  256 + lib3270_write_log(hSession,"ssl","%s: %s",url, message->popup->body);
238 errno = ENOENT; 257 errno = ENOENT;
239 return NULL; 258 return NULL;
240 } 259 }
@@ -254,10 +273,14 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons @@ -254,10 +273,14 @@ X509_CRL * get_crl_using_ldap(H3270 *hSession, SSL_ERROR_MESSAGE * message, cons
254 273
255 if(!d2i_X509_CRL(&x509_crl, &crl_data, value[0]->bv_len)) 274 if(!d2i_X509_CRL(&x509_crl, &crl_data, value[0]->bv_len))
256 { 275 {
257 - message->error = hSession->ssl.error = ERR_get_error();  
258 - message->title = _( "Security error" );  
259 - message->text = _( "Can't decode certificate revocation list" );  
260 - lib3270_write_log(hSession,"ssl","%s: %s",url, message->text); 276 + static const LIB3270_POPUP popup = {
  277 + .summary = N_( "Can't decode certificate revocation list" )
  278 + };
  279 +
  280 + message->code = hSession->ssl.error = ERR_get_error();
  281 + message->popup = &popup;
  282 +
  283 + lib3270_write_log(hSession,"ssl","%s: %s",url, message->popup->summary);
261 ldap_value_free_len(value); 284 ldap_value_free_len(value);
262 return NULL; 285 return NULL;
263 } 286 }