X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Fopenssl.c;h=f617f79b4eb51ecbedf18cb53d70c4fddf1bfbd9;hb=debec8216fc7126c80a322edb3acbaa1287ae6b7;hp=1f96706b0a5598c5974dc5828d62c6c19e442d21;hpb=550c39e714b2ddcde02de48823437018283895b3;p=wget diff --git a/src/openssl.c b/src/openssl.c index 1f96706b..f617f79b 100644 --- a/src/openssl.c +++ b/src/openssl.c @@ -287,9 +287,8 @@ openssl_peek (int fd, char *buf, int bufsize, void *ctx) static const char * openssl_errstr (int fd, void *ctx) { - /* Unfortunately we cannot use ERR_error_string's internal buf - because we must be prepared to printing more than one error in - succession. */ + /* Unfortunately we cannot use ERR_error_string's internal buffer + because we must be prepared to print more than one error. */ static char errbuf[512]; char *p = errbuf, *end = errbuf + sizeof errbuf; unsigned long err; @@ -299,16 +298,18 @@ openssl_errstr (int fd, void *ctx) return NULL; /* Iterate over OpenSSL's error stack and print errors to ERRBUF, - each followed by '\n', while being careful not to overrun - ERRBUF. */ + separated by "; ", while being careful not to overrun ERRBUF. */ do { ERR_error_string_n (err, p, end - p); p = strchr (p, '\0'); - if (p < end) - *p++ = '\n'; + err = ERR_get_error (); + if (err == 0) + break; + if (p < end) *p++ = ';'; + if (p < end) *p++ = ' '; } - while ((err = ERR_get_error ()) != 0); + while (p < end); if (p < end) *p++ = '\0';