Mercurial > dovecot > original-hg > dovecot-1.2
changeset 4299:dacf4dc615ec HEAD
Reversed last change. Instead handle DH_generate_parameters() call's failure.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 31 May 2006 16:59:03 +0300 |
parents | 2e4639fd3c7c |
children | 3eeceb1156ad |
files | src/master/ssl-init-openssl.c |
diffstat | 1 files changed, 22 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/master/ssl-init-openssl.c Wed May 31 16:54:21 2006 +0300 +++ b/src/master/ssl-init-openssl.c Wed May 31 16:59:03 2006 +0300 @@ -17,21 +17,36 @@ #define DH_PARAM_BITSIZE_COUNT \ (sizeof(dh_param_bitsizes)/sizeof(dh_param_bitsizes[0])) +static const char *ssl_last_error(void) +{ + unsigned long err; + char *buf; + size_t err_size = 256; + + err = ERR_get_error(); + if (err == 0) + return strerror(errno); + + buf = t_malloc(err_size); + buf[err_size-1] = '\0'; + ERR_error_string_n(err, buf, err_size-1); + return buf; +} + static void generate_dh_parameters(int bitsize, int fd, const char *fname) { DH *dh = DH_generate_parameters(bitsize, DH_GENERATOR, NULL, NULL); unsigned char *buf, *p; int len; + if (dh == NULL) { + i_fatal("DH_generate_parameters(bits=%d, gen=%d) failed: %s", + bitsize, DH_GENERATOR, ssl_last_error()); + } + len = i2d_DHparams(dh, NULL); if (len < 0) - i_fatal("i2d_DHparams() failed: %lu", ERR_get_error()); - - if (len == 0) { - i_fatal("i2d_DHparams() returned 0 for data from " - "DH_generate_parameters(bits=%d, generator=%d)", - bitsize, DH_GENERATOR); - } + i_fatal("i2d_DHparams() failed: %s", ssl_last_error()); buf = p = i_malloc(len); len = i2d_DHparams(dh, &p);