Commit 4c492af79d123d8c5d82779ed58f84888fe19e58

Authored by Perry Werneck
1 parent f42e13da

Fixing thread issue on custom certificate loading.

Showing 1 changed file with 13 additions and 43 deletions   Show diff stats
src/ssl/windows/init.c
... ... @@ -107,37 +107,23 @@ int ssl_ctx_init(H3270 *hSession, SSL_ERROR_MESSAGE * message)
107 107  
108 108 if(hFind == INVALID_HANDLE_VALUE)
109 109 {
110   - lib3270_autoptr(char) message = lib3270_strdup_printf( _( "Can't read SSL certificates from \"%s\"" ), certpath);
111   -
112   - lib3270_popup_dialog(
113   - hSession,
114   - LIB3270_NOTIFY_ERROR,
115   - N_( "Security error" ),
116   - message,
117   - _("The windows error code was %d"), (int) GetLastError()
118   - );
  110 + message->title = N_( "Security error" );
  111 + message->text = N_( "Cant open custom certificate directory." );
119 112  
  113 + trace_ssl(hSession, _( "Can't open \"%s\" (The Windows error code was %ld)" ), certpath, (long) GetLastError());
120 114 }
121 115 else
122 116 {
123 117 do
124 118 {
125   - char * filename = lib3270_build_data_filename("certs",ffd.cFileName,NULL);
  119 + char * filename = lib3270_build_data_filename("certs", ffd.cFileName, NULL);
126 120  
127 121 debug("Loading \"%s\"",filename);
128 122  
129 123 FILE *fp = fopen(filename,"r");
130 124 if(!fp) {
131 125  
132   - lib3270_autoptr(char) message = lib3270_strdup_printf( _( "Can't open \"%s\"" ), filename);
133   -
134   - lib3270_popup_dialog(
135   - hSession,
136   - LIB3270_NOTIFY_ERROR,
137   - N_( "Security error" ),
138   - message,
139   - "%s", strerror(errno)
140   - );
  126 + trace_ssl(hSession, _( "Can't open \"%s\": %s" ), filename, strerror(errno));
141 127  
142 128 }
143 129 else
... ... @@ -146,36 +132,22 @@ int ssl_ctx_init(H3270 *hSession, SSL_ERROR_MESSAGE * message)
146 132  
147 133 if(!cert)
148 134 {
149   - int ssl_error = ERR_get_error();
150   -
151   - lib3270_autoptr(char) message = lib3270_strdup_printf( _( "Can't read \"%s\"" ), filename);
152   -
153   - lib3270_popup_dialog(
154   - hSession,
155   - LIB3270_NOTIFY_ERROR,
156   - N_( "Security error" ),
157   - message,
158   - "%s", ERR_lib_error_string(ssl_error)
159   - );
  135 + message->error = hSession->ssl.error = ERR_get_error();
  136 + message->title = N_( "Security error" );
  137 + message->text = N_( "Cant read custom certificate file." );
160 138  
  139 + trace_ssl(hSession, _( "Can't read \"%s\": %s" ), filename, ERR_lib_error_string(hSession->ssl.error));
161 140 }
162 141 else
163 142 {
164   - trace_ssl(hSession,"Loading %s\n",filename);
165 143  
166 144 if(X509_STORE_add_cert(store, cert) != 1)
167 145 {
168   - int ssl_error = ERR_get_error();
169   -
170   - lib3270_autoptr(char) message = lib3270_strdup_printf( _( "Can't load \"%s\"" ), filename);
  146 + message->error = hSession->ssl.error = ERR_get_error();
  147 + message->title = N_( "Security error" );
  148 + message->text = N_( "Cant load custom certificate file." );
171 149  
172   - lib3270_popup_dialog(
173   - hSession,
174   - LIB3270_NOTIFY_ERROR,
175   - N_( "Security error" ),
176   - message,
177   - "%s", ERR_lib_error_string(ssl_error)
178   - );
  150 + trace_ssl(hSession, _( "Can't load \"%s\": %s" ), filename, ERR_lib_error_string(hSession->ssl.error));
179 151 }
180 152  
181 153 X509_free(cert);
... ... @@ -191,8 +163,6 @@ int ssl_ctx_init(H3270 *hSession, SSL_ERROR_MESSAGE * message)
191 163  
192 164 }
193 165  
194   - // lib3270_build_lib3270_strdup_printf("%s\\certs",appdir);
195   -
196 166 ssl_3270_ex_index = SSL_get_ex_new_index(0,NULL,NULL,NULL,NULL);
197 167  
198 168 #ifdef SSL_ENABLE_CRL_CHECK
... ...