X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/0d7eb84a5719dda876c4b7def944d721cd259e19..d7d7b7b91dd75cec636fc144da7e27eed860f971:/src/src/tls-gnu.c diff --git a/src/src/tls-gnu.c b/src/src/tls-gnu.c index 723d97b4e..fa3073642 100644 --- a/src/src/tls-gnu.c +++ b/src/src/tls-gnu.c @@ -1,10 +1,10 @@ -/* $Cambridge: exim/src/src/tls-gnu.c,v 1.7 2005/06/07 15:20:56 ph10 Exp $ */ +/* $Cambridge: exim/src/src/tls-gnu.c,v 1.11 2006/02/07 11:19:00 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2005 */ +/* Copyright (c) University of Cambridge 1995 - 2006 */ /* See the file NOTICE for conditions of use and distribution. */ /* This module provides TLS (aka SSL) support for Exim using the GnuTLS @@ -256,7 +256,7 @@ static int init_rsa_dh(host_item *host) { int fd; -int ret = -1; +int ret; gnutls_datum m; uschar filename[200]; @@ -299,6 +299,7 @@ if (fd >= 0) (void)close(fd); ret = gnutls_rsa_params_import_pkcs1(rsa_params, &m, GNUTLS_X509_FMT_PEM); + if (ret < 0) { DEBUG(D_tls) @@ -318,7 +319,13 @@ if (fd >= 0) /* If the file does not exist, fall through to compute new data and cache it. If there was any other opening error, it is serious. */ -else if (errno != ENOENT) +else if (errno == ENOENT) + { + ret = -1; + DEBUG(D_tls) + debug_printf("parameter cache file %s does not exist\n", filename); + } +else return tls_error(string_open_failed(errno, "%s for reading", filename), host, 0); @@ -391,7 +398,8 @@ if (ret < 0) return tls_error(string_sprintf("failed to rename %s as %s: %s", tempfilename, filename, strerror(errno)), host, 0); - DEBUG(D_tls) debug_printf("wrote RSA and D-H parameters to file\n"); + DEBUG(D_tls) debug_printf("wrote RSA and D-H parameters to file %s\n", + filename); } DEBUG(D_tls) debug_printf("initialized RSA and D-H parameters\n"); @@ -499,8 +507,8 @@ if (cas != NULL) return DEFER; } - DEBUG(D_tls) debug_printf("verify certificates = %s size=%.30g\n", - cas_expanded, (double)statbuf.st_size); + DEBUG(D_tls) debug_printf("verify certificates = %s size=" OFF_T_FMT "\n", + cas_expanded, statbuf.st_size); /* If the cert file is empty, there's no point in loading the CRL file. */ @@ -856,8 +864,8 @@ if (rc < 0) if (!sigalrm_seen) { - fclose(smtp_out); - fclose(smtp_in); + (void)fclose(smtp_out); + (void)fclose(smtp_in); } return FAIL;