Commit 67b6a41151bbd479cc299da985b61c153fee0302

Authored by Perry Werneck
1 parent 6b03fca4
Exists in develop

Setting state on unexpected exit during the build of ssl_context.

Showing 1 changed file with 24 additions and 26 deletions   Show diff stats
src/network_modules/openssl/start.c
  1 +/* SPDX-License-Identifier: LGPL-3.0-or-later */
  2 +
1 3 /*
2   - * "Software PW3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
3   - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
4   - * aplicativos mainframe. Registro no INPI sob o nome G3270.
5   - *
6   - * Copyright (C) <2008> <Banco do Brasil S.A.>
7   - *
8   - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
9   - * os termos da GPL v.2 - Licença Pública Geral ', conforme publicado pela
10   - * Free Software Foundation.
11   - *
12   - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
13   - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
14   - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
15   - * obter mais detalhes.
16   - *
17   - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
18   - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como openssl.c e possui - linhas de código.
  4 + * Copyright (C) 2008 Banco do Brasil S.A.
22 5 *
23   - * Contatos:
  6 + * This program is free software: you can redistribute it and/or modify
  7 + * it under the terms of the GNU Lesser General Public License as published
  8 + * by the Free Software Foundation, either version 3 of the License, or
  9 + * (at your option) any later version.
24 10 *
25   - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
26   - * erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
27 15 *
  16 + * You should have received a copy of the GNU Lesser General Public License
  17 + * along with this program. If not, see <https://www.gnu.org/licenses/>.
28 18 */
29 19  
30 20 /**
... ... @@ -199,8 +189,17 @@ int x509_store_ctx_error_callback(int ok, X509_STORE_CTX GNUC_UNUSED(*ctx)) {
199 189 int openssl_network_start_tls(H3270 *hSession) {
200 190  
201 191 SSL_CTX * ctx_context = (SSL_CTX *) lib3270_openssl_get_context(hSession);
202   - if(!ctx_context)
  192 + if(!ctx_context) {
  193 +
  194 + if(!hSession->ssl.message) {
  195 + static const LIB3270_SSL_MESSAGE message = {
  196 + .type = LIB3270_NOTIFY_SECURE,
  197 + .summary = N_( "Cant get SSL context for current connection." )
  198 + };
  199 + hSession->ssl.message = &message;
  200 + }
203 201 return -1;
  202 + }
204 203  
205 204 LIB3270_NET_CONTEXT * context = hSession->network.context;
206 205  
... ... @@ -212,7 +211,6 @@ int openssl_network_start_tls(H3270 *hSession) {
212 211 .type = LIB3270_NOTIFY_SECURE,
213 212 .summary = N_( "Cant create a new SSL structure for current connection." )
214 213 };
215   -
216 214 hSession->ssl.message = &message;
217 215 return -1;
218 216 }
... ... @@ -241,6 +239,7 @@ int openssl_network_start_tls(H3270 *hSession) {
241 239 trace_ssl(hSession, "SSL_connect exits with rc=%d\n",rv);
242 240  
243 241 if (rv != 1) {
  242 +
244 243 LIB3270_SSL_MESSAGE message = {
245 244 .type = LIB3270_NOTIFY_ERROR,
246 245 .title = N_( "Connection failed" ),
... ... @@ -313,7 +312,6 @@ int openssl_network_start_tls(H3270 *hSession) {
313 312  
314 313 // CRL download is enabled and verification has failed; look for CRL file.
315 314  
316   -
317 315 trace_ssl(hSession,"CRL Validation has failed, requesting CRL download\n");
318 316 set_ssl_state(hSession,LIB3270_SSL_VERIFYING);
319 317  
... ...