summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbeck <>2014-04-26 18:56:38 +0000
committerbeck <>2014-04-26 18:56:38 +0000
commit47bb6e76785f0b1c4d19d8d0a02f3eb3813f96e2 (patch)
treedff54039de6c4454b05953e2ce78edfc5693e6b5
parent8f710803a9e330d7e3f2e62116ae5b3fc02bd6cf (diff)
downloadopenbsd-47bb6e76785f0b1c4d19d8d0a02f3eb3813f96e2.tar.gz
openbsd-47bb6e76785f0b1c4d19d8d0a02f3eb3813f96e2.tar.bz2
openbsd-47bb6e76785f0b1c4d19d8d0a02f3eb3813f96e2.zip
Replace all use of ERR_add_error_data with ERR_asprintf_error_data.
This avoids a lot of ugly gymnastics to do snprintfs before sending the bag of strings to ERR, and eliminates at least one place in dso_dlfctn.c where it was being called with the incorrect number of arguments and using random things off the stack as addresses of strings. ok krw@, jsing@
-rw-r--r--src/lib/libcrypto/asn1/a_mbstr.c7
-rw-r--r--src/lib/libcrypto/asn1/asn1_gen.c9
-rw-r--r--src/lib/libcrypto/asn1/asn1_lib.c5
-rw-r--r--src/lib/libcrypto/asn1/asn_mime.c6
-rw-r--r--src/lib/libcrypto/asn1/tasn_dec.c6
-rw-r--r--src/lib/libcrypto/bio/b_sock.c10
-rw-r--r--src/lib/libcrypto/bio/bss_conn.c25
-rw-r--r--src/lib/libcrypto/bio/bss_file.c4
-rw-r--r--src/lib/libcrypto/cms/cms_smime.c2
-rw-r--r--src/lib/libcrypto/comp/c_zlib.c6
-rw-r--r--src/lib/libcrypto/conf/conf_def.c4
-rw-r--r--src/lib/libcrypto/conf/conf_lib.c2
-rw-r--r--src/lib/libcrypto/conf/conf_mod.c11
-rw-r--r--src/lib/libcrypto/dso/dso_dlfcn.c9
-rw-r--r--src/lib/libcrypto/engine/eng_cnf.c6
-rw-r--r--src/lib/libcrypto/engine/eng_fat.c2
-rw-r--r--src/lib/libcrypto/engine/eng_list.c4
-rw-r--r--src/lib/libcrypto/evp/evp_pbe.c2
-rw-r--r--src/lib/libcrypto/evp/evp_pkey.c2
-rw-r--r--src/lib/libcrypto/ocsp/ocsp_ht.c4
-rw-r--r--src/lib/libcrypto/ocsp/ocsp_vfy.c6
-rw-r--r--src/lib/libcrypto/pem/pem_lib.c2
-rw-r--r--src/lib/libcrypto/pkcs7/bio_ber.c4
-rw-r--r--src/lib/libcrypto/pkcs7/pk7_smime.c2
-rw-r--r--src/lib/libcrypto/ts/ts_conf.c2
-rw-r--r--src/lib/libcrypto/ts/ts_rsp_verify.c12
-rw-r--r--src/lib/libcrypto/ui/ui_lib.c43
-rw-r--r--src/lib/libcrypto/x509/x509_att.c2
-rw-r--r--src/lib/libcrypto/x509/x509name.c2
-rw-r--r--src/lib/libcrypto/x509v3/v3_akey.c2
-rw-r--r--src/lib/libcrypto/x509v3/v3_alt.c8
-rw-r--r--src/lib/libcrypto/x509v3/v3_conf.c12
-rw-r--r--src/lib/libcrypto/x509v3/v3_info.c4
-rw-r--r--src/lib/libcrypto/x509v3/x509v3.h5
-rw-r--r--src/lib/libssl/d1_pkt.c6
-rw-r--r--src/lib/libssl/s3_pkt.c6
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_mbstr.c7
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1_gen.c9
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1_lib.c5
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn_mime.c6
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_dec.c6
-rw-r--r--src/lib/libssl/src/crypto/bio/b_sock.c10
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_conn.c25
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_file.c4
-rw-r--r--src/lib/libssl/src/crypto/cms/cms_smime.c2
-rw-r--r--src/lib/libssl/src/crypto/comp/c_zlib.c6
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_def.c4
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_lib.c2
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_mod.c11
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_dlfcn.c9
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_cnf.c6
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_fat.c2
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_list.c4
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_pbe.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_pkey.c2
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_ht.c4
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c6
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_lib.c2
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/bio_ber.c4
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_smime.c2
-rw-r--r--src/lib/libssl/src/crypto/ts/ts_conf.c2
-rw-r--r--src/lib/libssl/src/crypto/ts/ts_rsp_verify.c12
-rw-r--r--src/lib/libssl/src/crypto/ui/ui_lib.c43
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_att.c2
-rw-r--r--src/lib/libssl/src/crypto/x509/x509name.c2
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_akey.c2
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_alt.c8
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_conf.c12
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_info.c4
-rw-r--r--src/lib/libssl/src/crypto/x509v3/x509v3.h5
-rw-r--r--src/lib/libssl/src/ssl/d1_pkt.c6
-rw-r--r--src/lib/libssl/src/ssl/s3_pkt.c6
-rw-r--r--src/lib/libssl/src/ssl/ssl_cert.c2
-rw-r--r--src/lib/libssl/ssl_cert.c2
74 files changed, 222 insertions, 270 deletions
diff --git a/src/lib/libcrypto/asn1/a_mbstr.c b/src/lib/libcrypto/asn1/a_mbstr.c
index b59d84910f..9945ede2ac 100644
--- a/src/lib/libcrypto/asn1/a_mbstr.c
+++ b/src/lib/libcrypto/asn1/a_mbstr.c
@@ -98,7 +98,6 @@ ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
98 ASN1_STRING *dest; 98 ASN1_STRING *dest;
99 unsigned char *p; 99 unsigned char *p;
100 int nchar; 100 int nchar;
101 char strbuf[32];
102 int (*cpyfunc)(unsigned long, void *) = NULL; 101 int (*cpyfunc)(unsigned long, void *) = NULL;
103 102
104 if (len == -1) 103 if (len == -1)
@@ -148,15 +147,13 @@ ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
148 147
149 if ((minsize > 0) && (nchar < minsize)) { 148 if ((minsize > 0) && (nchar < minsize)) {
150 ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_SHORT); 149 ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_SHORT);
151 snprintf(strbuf, sizeof strbuf, "%ld", minsize); 150 ERR_asprintf_error_data("minsize=%ld", minsize);
152 ERR_add_error_data(2, "minsize=", strbuf);
153 return -1; 151 return -1;
154 } 152 }
155 153
156 if ((maxsize > 0) && (nchar > maxsize)) { 154 if ((maxsize > 0) && (nchar > maxsize)) {
157 ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_LONG); 155 ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_LONG);
158 snprintf(strbuf, sizeof strbuf, "%ld", maxsize); 156 ERR_asprintf_error_data("maxsize=%ld", maxsize);
159 ERR_add_error_data(2, "maxsize=", strbuf);
160 return -1; 157 return -1;
161 } 158 }
162 159
diff --git a/src/lib/libcrypto/asn1/asn1_gen.c b/src/lib/libcrypto/asn1/asn1_gen.c
index c66bea2ab4..598a322242 100644
--- a/src/lib/libcrypto/asn1/asn1_gen.c
+++ b/src/lib/libcrypto/asn1/asn1_gen.c
@@ -291,7 +291,7 @@ asn1_cb(const char *elem, int len, void *bitstr)
291 291
292 if (utype == -1) { 292 if (utype == -1) {
293 ASN1err(ASN1_F_ASN1_CB, ASN1_R_UNKNOWN_TAG); 293 ASN1err(ASN1_F_ASN1_CB, ASN1_R_UNKNOWN_TAG);
294 ERR_add_error_data(2, "tag=", elem); 294 ERR_asprintf_error_data("tag=%s", elem);
295 return -1; 295 return -1;
296 } 296 }
297 297
@@ -370,7 +370,6 @@ asn1_cb(const char *elem, int len, void *bitstr)
370static int 370static int
371parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass) 371parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass)
372{ 372{
373 char erch[2];
374 long tag_num; 373 long tag_num;
375 char *eptr; 374 char *eptr;
376 375
@@ -410,10 +409,8 @@ parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass)
410 break; 409 break;
411 410
412 default: 411 default:
413 erch[0] = *eptr;
414 erch[1] = 0;
415 ASN1err(ASN1_F_PARSE_TAGGING, ASN1_R_INVALID_MODIFIER); 412 ASN1err(ASN1_F_PARSE_TAGGING, ASN1_R_INVALID_MODIFIER);
416 ERR_add_error_data(2, "Char=", erch); 413 ERR_asprintf_error_data("Char=%c", *eptr);
417 return 0; 414 return 0;
418 break; 415 break;
419 416
@@ -777,7 +774,7 @@ asn1_str2type(const char *str, int format, int utype)
777 return atmp; 774 return atmp;
778 775
779bad_str: 776bad_str:
780 ERR_add_error_data(2, "string=", str); 777 ERR_asprintf_error_data("string=%s", str);
781bad_form: 778bad_form:
782 ASN1_TYPE_free(atmp); 779 ASN1_TYPE_free(atmp);
783 return NULL; 780 return NULL;
diff --git a/src/lib/libcrypto/asn1/asn1_lib.c b/src/lib/libcrypto/asn1/asn1_lib.c
index 4d4368aefe..c2f0837a1c 100644
--- a/src/lib/libcrypto/asn1/asn1_lib.c
+++ b/src/lib/libcrypto/asn1/asn1_lib.c
@@ -459,10 +459,7 @@ ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b)
459void 459void
460asn1_add_error(const unsigned char *address, int offset) 460asn1_add_error(const unsigned char *address, int offset)
461{ 461{
462 char tmp[128]; 462 ERR_asprintf_error_data("address=%p offset=%d", address, offset);
463 (void) snprintf(tmp, sizeof(tmp), "address=%p offset=%d",
464 address, offset);
465 ERR_add_error_data(1, tmp);
466} 463}
467 464
468int 465int
diff --git a/src/lib/libcrypto/asn1/asn_mime.c b/src/lib/libcrypto/asn1/asn_mime.c
index 248ea114e8..b30c366561 100644
--- a/src/lib/libcrypto/asn1/asn_mime.c
+++ b/src/lib/libcrypto/asn1/asn_mime.c
@@ -493,7 +493,7 @@ SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it)
493 strcmp(hdr->value, "application/pkcs7-signature")) { 493 strcmp(hdr->value, "application/pkcs7-signature")) {
494 ASN1err(ASN1_F_SMIME_READ_ASN1, 494 ASN1err(ASN1_F_SMIME_READ_ASN1,
495 ASN1_R_SIG_INVALID_MIME_TYPE); 495 ASN1_R_SIG_INVALID_MIME_TYPE);
496 ERR_add_error_data(2, "type: ", hdr->value); 496 ERR_asprintf_error_data("type: %s", hdr->value);
497 sk_MIME_HEADER_pop_free(headers, mime_hdr_free); 497 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
498 sk_BIO_pop_free(parts, BIO_vfree); 498 sk_BIO_pop_free(parts, BIO_vfree);
499 return NULL; 499 return NULL;
@@ -520,7 +520,7 @@ SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it)
520 if (strcmp (hdr->value, "application/x-pkcs7-mime") && 520 if (strcmp (hdr->value, "application/x-pkcs7-mime") &&
521 strcmp (hdr->value, "application/pkcs7-mime")) { 521 strcmp (hdr->value, "application/pkcs7-mime")) {
522 ASN1err(ASN1_F_SMIME_READ_ASN1, ASN1_R_INVALID_MIME_TYPE); 522 ASN1err(ASN1_F_SMIME_READ_ASN1, ASN1_R_INVALID_MIME_TYPE);
523 ERR_add_error_data(2, "type: ", hdr->value); 523 ERR_asprintf_error_data("type: %s", hdr->value);
524 sk_MIME_HEADER_pop_free(headers, mime_hdr_free); 524 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
525 return NULL; 525 return NULL;
526 } 526 }
@@ -591,7 +591,7 @@ SMIME_text(BIO *in, BIO *out)
591 } 591 }
592 if (strcmp (hdr->value, "text/plain")) { 592 if (strcmp (hdr->value, "text/plain")) {
593 ASN1err(ASN1_F_SMIME_TEXT, ASN1_R_INVALID_MIME_TYPE); 593 ASN1err(ASN1_F_SMIME_TEXT, ASN1_R_INVALID_MIME_TYPE);
594 ERR_add_error_data(2, "type: ", hdr->value); 594 ERR_asprintf_error_data("type: %s", hdr->value);
595 sk_MIME_HEADER_pop_free(headers, mime_hdr_free); 595 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
596 return 0; 596 return 0;
597 } 597 }
diff --git a/src/lib/libcrypto/asn1/tasn_dec.c b/src/lib/libcrypto/asn1/tasn_dec.c
index 560b6f3d5f..d86bc4e091 100644
--- a/src/lib/libcrypto/asn1/tasn_dec.c
+++ b/src/lib/libcrypto/asn1/tasn_dec.c
@@ -496,10 +496,10 @@ auxerr:
496err: 496err:
497 ASN1_item_ex_free(pval, it); 497 ASN1_item_ex_free(pval, it);
498 if (errtt) 498 if (errtt)
499 ERR_add_error_data(4, "Field=", errtt->field_name, 499 ERR_asprintf_error_data("Field=%s, Type=%s", errtt->field_name,
500 ", Type=", it->sname); 500 it->sname);
501 else 501 else
502 ERR_add_error_data(2, "Type=", it->sname); 502 ERR_asprintf_error_data("Type=%s", it->sname);
503 return 0; 503 return 0;
504} 504}
505 505
diff --git a/src/lib/libcrypto/bio/b_sock.c b/src/lib/libcrypto/bio/b_sock.c
index 05eb362cc6..ecfaf93b99 100644
--- a/src/lib/libcrypto/bio/b_sock.c
+++ b/src/lib/libcrypto/bio/b_sock.c
@@ -129,7 +129,7 @@ err:
129 if (locked) 129 if (locked)
130 CRYPTO_w_unlock(CRYPTO_LOCK_GETHOSTBYNAME); 130 CRYPTO_w_unlock(CRYPTO_LOCK_GETHOSTBYNAME);
131 if (err) { 131 if (err) {
132 ERR_add_error_data(2, "host=", str); 132 ERR_asprintf_error_data("host=%s", str);
133 return 0; 133 return 0;
134 } else 134 } else
135 return 1; 135 return 1;
@@ -171,7 +171,7 @@ BIO_get_port(const char *str, unsigned short *port_ptr)
171 *port_ptr = 70; 171 *port_ptr = 70;
172 else { 172 else {
173 SYSerr(SYS_F_GETSERVBYNAME, errno); 173 SYSerr(SYS_F_GETSERVBYNAME, errno);
174 ERR_add_error_data(3, "service='", str, "'"); 174 ERR_asprintf_error_data("service='%s'", str);
175 return (0); 175 return (0);
176 } 176 }
177 } 177 }
@@ -378,7 +378,7 @@ again:
378 s = socket(server.sa.sa_family, SOCK_STREAM, SOCKET_PROTOCOL); 378 s = socket(server.sa.sa_family, SOCK_STREAM, SOCKET_PROTOCOL);
379 if (s == -1) { 379 if (s == -1) {
380 SYSerr(SYS_F_SOCKET, errno); 380 SYSerr(SYS_F_SOCKET, errno);
381 ERR_add_error_data(3, "port='", host, "'"); 381 ERR_asprintf_error_data("port='%s'", host);
382 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_CREATE_SOCKET); 382 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_CREATE_SOCKET);
383 goto err; 383 goto err;
384 } 384 }
@@ -422,13 +422,13 @@ again:
422 } 422 }
423#endif 423#endif
424 SYSerr(SYS_F_BIND, err_num); 424 SYSerr(SYS_F_BIND, err_num);
425 ERR_add_error_data(3, "port='", host, "'"); 425 ERR_asprintf_error_data("port='%s'", host);
426 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_BIND_SOCKET); 426 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_BIND_SOCKET);
427 goto err; 427 goto err;
428 } 428 }
429 if (listen(s, MAX_LISTEN) == -1) { 429 if (listen(s, MAX_LISTEN) == -1) {
430 SYSerr(SYS_F_BIND, errno); 430 SYSerr(SYS_F_BIND, errno);
431 ERR_add_error_data(3, "port='", host, "'"); 431 ERR_asprintf_error_data("port='%s'", host);
432 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_LISTEN_SOCKET); 432 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_LISTEN_SOCKET);
433 goto err; 433 goto err;
434 } 434 }
diff --git a/src/lib/libcrypto/bio/bss_conn.c b/src/lib/libcrypto/bio/bss_conn.c
index b64d7d7761..d7a8619b38 100644
--- a/src/lib/libcrypto/bio/bss_conn.c
+++ b/src/lib/libcrypto/bio/bss_conn.c
@@ -156,7 +156,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
156 156
157 if (c->param_port == NULL) { 157 if (c->param_port == NULL) {
158 BIOerr(BIO_F_CONN_STATE, BIO_R_NO_PORT_SPECIFIED); 158 BIOerr(BIO_F_CONN_STATE, BIO_R_NO_PORT_SPECIFIED);
159 ERR_add_error_data(2, "host=", c->param_hostname); 159 ERR_asprintf_error_data("host=%s",
160 c->param_hostname);
160 goto exit_loop; 161 goto exit_loop;
161 } 162 }
162 c->state = BIO_CONN_S_GET_IP; 163 c->state = BIO_CONN_S_GET_IP;
@@ -193,8 +194,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
193 ret = socket(AF_INET, SOCK_STREAM, SOCKET_PROTOCOL); 194 ret = socket(AF_INET, SOCK_STREAM, SOCKET_PROTOCOL);
194 if (ret == -1) { 195 if (ret == -1) {
195 SYSerr(SYS_F_SOCKET, errno); 196 SYSerr(SYS_F_SOCKET, errno);
196 ERR_add_error_data(4, "host=", 197 ERR_asprintf_error_data("host=%s:%s",
197 c->param_hostname, ":", c->param_port); 198 c->param_hostname, c->param_port);
198 BIOerr(BIO_F_CONN_STATE, 199 BIOerr(BIO_F_CONN_STATE,
199 BIO_R_UNABLE_TO_CREATE_SOCKET); 200 BIO_R_UNABLE_TO_CREATE_SOCKET);
200 goto exit_loop; 201 goto exit_loop;
@@ -208,9 +209,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
208 if (!BIO_socket_nbio(b->num, 1)) { 209 if (!BIO_socket_nbio(b->num, 1)) {
209 BIOerr(BIO_F_CONN_STATE, 210 BIOerr(BIO_F_CONN_STATE,
210 BIO_R_ERROR_SETTING_NBIO); 211 BIO_R_ERROR_SETTING_NBIO);
211 ERR_add_error_data(4, "host=", 212 ERR_asprintf_error_data("host=%s:%s",
212 c->param_hostname, ":", 213 c->param_hostname, c->param_port);
213 c->param_port);
214 goto exit_loop; 214 goto exit_loop;
215 } 215 }
216 } 216 }
@@ -221,8 +221,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
221 i = setsockopt(b->num, SOL_SOCKET, SO_KEEPALIVE,(char *)&i, sizeof(i)); 221 i = setsockopt(b->num, SOL_SOCKET, SO_KEEPALIVE,(char *)&i, sizeof(i));
222 if (i < 0) { 222 if (i < 0) {
223 SYSerr(SYS_F_SOCKET, errno); 223 SYSerr(SYS_F_SOCKET, errno);
224 ERR_add_error_data(4, "host=", 224 ERR_asprintf_error_data("host=%s:%s",
225 c->param_hostname, ":", c->param_port); 225 c->param_hostname, c->param_port);
226 BIOerr(BIO_F_CONN_STATE, BIO_R_KEEPALIVE); 226 BIOerr(BIO_F_CONN_STATE, BIO_R_KEEPALIVE);
227 goto exit_loop; 227 goto exit_loop;
228 } 228 }
@@ -242,9 +242,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
242 b->retry_reason = BIO_RR_CONNECT; 242 b->retry_reason = BIO_RR_CONNECT;
243 } else { 243 } else {
244 SYSerr(SYS_F_CONNECT, errno); 244 SYSerr(SYS_F_CONNECT, errno);
245 ERR_add_error_data(4, "host=", 245 ERR_asprintf_error_data("host=%s:%s",
246 c->param_hostname, ":", 246 c->param_hostname, c->param_port);
247 c->param_port);
248 BIOerr(BIO_F_CONN_STATE, 247 BIOerr(BIO_F_CONN_STATE,
249 BIO_R_CONNECT_ERROR); 248 BIO_R_CONNECT_ERROR);
250 } 249 }
@@ -258,8 +257,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
258 if (i) { 257 if (i) {
259 BIO_clear_retry_flags(b); 258 BIO_clear_retry_flags(b);
260 SYSerr(SYS_F_CONNECT, i); 259 SYSerr(SYS_F_CONNECT, i);
261 ERR_add_error_data(4, "host=", 260 ERR_asprintf_error_data("host=%s:%s",
262 c->param_hostname, ":", c->param_port); 261 c->param_hostname, c->param_port);
263 BIOerr(BIO_F_CONN_STATE, 262 BIOerr(BIO_F_CONN_STATE,
264 BIO_R_NBIO_CONNECT_ERROR); 263 BIO_R_NBIO_CONNECT_ERROR);
265 ret = 0; 264 ret = 0;
diff --git a/src/lib/libcrypto/bio/bss_file.c b/src/lib/libcrypto/bio/bss_file.c
index acc746260e..6d5444f666 100644
--- a/src/lib/libcrypto/bio/bss_file.c
+++ b/src/lib/libcrypto/bio/bss_file.c
@@ -122,7 +122,7 @@ BIO_new_file(const char *filename, const char *mode)
122 122
123 if (file == NULL) { 123 if (file == NULL) {
124 SYSerr(SYS_F_FOPEN, errno); 124 SYSerr(SYS_F_FOPEN, errno);
125 ERR_add_error_data(5, "fopen('", filename, "', '", mode, "')"); 125 ERR_asprintf_error_data("fopen('%s', '%s')", filename, mode);
126 if (errno == ENOENT) 126 if (errno == ENOENT)
127 BIOerr(BIO_F_BIO_NEW_FILE, BIO_R_NO_SUCH_FILE); 127 BIOerr(BIO_F_BIO_NEW_FILE, BIO_R_NO_SUCH_FILE);
128 else 128 else
@@ -262,7 +262,7 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
262 fp = fopen(ptr, p); 262 fp = fopen(ptr, p);
263 if (fp == NULL) { 263 if (fp == NULL) {
264 SYSerr(SYS_F_FOPEN, errno); 264 SYSerr(SYS_F_FOPEN, errno);
265 ERR_add_error_data(5, "fopen('", ptr, "', '", p, "')"); 265 ERR_asprintf_error_data("fopen('%s', '%s')", ptr, p);
266 BIOerr(BIO_F_FILE_CTRL, ERR_R_SYS_LIB); 266 BIOerr(BIO_F_FILE_CTRL, ERR_R_SYS_LIB);
267 ret = 0; 267 ret = 0;
268 break; 268 break;
diff --git a/src/lib/libcrypto/cms/cms_smime.c b/src/lib/libcrypto/cms/cms_smime.c
index 8c56e3a852..eed50cd6a3 100644
--- a/src/lib/libcrypto/cms/cms_smime.c
+++ b/src/lib/libcrypto/cms/cms_smime.c
@@ -302,7 +302,7 @@ static int cms_signerinfo_verify_cert(CMS_SignerInfo *si,
302 j = X509_STORE_CTX_get_error(&ctx); 302 j = X509_STORE_CTX_get_error(&ctx);
303 CMSerr(CMS_F_CMS_SIGNERINFO_VERIFY_CERT, 303 CMSerr(CMS_F_CMS_SIGNERINFO_VERIFY_CERT,
304 CMS_R_CERTIFICATE_VERIFY_ERROR); 304 CMS_R_CERTIFICATE_VERIFY_ERROR);
305 ERR_add_error_data(2, "Verify error:", 305 ERR_asprintf_error_data("Verify error:%s",
306 X509_verify_cert_error_string(j)); 306 X509_verify_cert_error_string(j));
307 goto err; 307 goto err;
308 } 308 }
diff --git a/src/lib/libcrypto/comp/c_zlib.c b/src/lib/libcrypto/comp/c_zlib.c
index aaf89429b6..3a73b3df0b 100644
--- a/src/lib/libcrypto/comp/c_zlib.c
+++ b/src/lib/libcrypto/comp/c_zlib.c
@@ -551,7 +551,7 @@ bio_zlib_read(BIO *b, char *out, int outl)
551 if ((ret != Z_OK) && (ret != Z_STREAM_END)) { 551 if ((ret != Z_OK) && (ret != Z_STREAM_END)) {
552 COMPerr(COMP_F_BIO_ZLIB_READ, 552 COMPerr(COMP_F_BIO_ZLIB_READ,
553 COMP_R_ZLIB_INFLATE_ERROR); 553 COMP_R_ZLIB_INFLATE_ERROR);
554 ERR_add_error_data(2, "zlib error:", 554 ERR_asprintf_error_data("zlib error:%s",
555 zError(ret)); 555 zError(ret));
556 return 0; 556 return 0;
557 } 557 }
@@ -638,7 +638,7 @@ bio_zlib_write(BIO *b, const char *in, int inl)
638 if (ret != Z_OK) { 638 if (ret != Z_OK) {
639 COMPerr(COMP_F_BIO_ZLIB_WRITE, 639 COMPerr(COMP_F_BIO_ZLIB_WRITE,
640 COMP_R_ZLIB_DEFLATE_ERROR); 640 COMP_R_ZLIB_DEFLATE_ERROR);
641 ERR_add_error_data(2, "zlib error:", zError(ret)); 641 ERR_asprintf_error_data("zlib error:%s", zError(ret));
642 return 0; 642 return 0;
643 } 643 }
644 ctx->ocount = ctx->obufsize - zout->avail_out; 644 ctx->ocount = ctx->obufsize - zout->avail_out;
@@ -688,7 +688,7 @@ bio_zlib_flush(BIO *b)
688 else if (ret != Z_OK) { 688 else if (ret != Z_OK) {
689 COMPerr(COMP_F_BIO_ZLIB_FLUSH, 689 COMPerr(COMP_F_BIO_ZLIB_FLUSH,
690 COMP_R_ZLIB_DEFLATE_ERROR); 690 COMP_R_ZLIB_DEFLATE_ERROR);
691 ERR_add_error_data(2, "zlib error:", zError(ret)); 691 ERR_asprintf_error_data("zlib error:%s", zError(ret));
692 return 0; 692 return 0;
693 } 693 }
694 ctx->ocount = ctx->obufsize - zout->avail_out; 694 ctx->ocount = ctx->obufsize - zout->avail_out;
diff --git a/src/lib/libcrypto/conf/conf_def.c b/src/lib/libcrypto/conf/conf_def.c
index 22fe7a8f60..bc9f139e7e 100644
--- a/src/lib/libcrypto/conf/conf_def.c
+++ b/src/lib/libcrypto/conf/conf_def.c
@@ -218,7 +218,6 @@ def_load_bio(CONF *conf, BIO *in, long *line)
218 char *s, *p, *end; 218 char *s, *p, *end;
219 int again; 219 int again;
220 long eline = 0; 220 long eline = 0;
221 char btmp[DECIMAL_SIZE(eline) + 1];
222 CONF_VALUE *v = NULL, *tv; 221 CONF_VALUE *v = NULL, *tv;
223 CONF_VALUE *sv = NULL; 222 CONF_VALUE *sv = NULL;
224 char *section = NULL, *buf; 223 char *section = NULL, *buf;
@@ -428,8 +427,7 @@ err:
428 free(section); 427 free(section);
429 if (line != NULL) 428 if (line != NULL)
430 *line = eline; 429 *line = eline;
431 snprintf(btmp, sizeof btmp, "%ld", eline); 430 ERR_asprintf_error_data("line %ld", eline);
432 ERR_add_error_data(2, "line ", btmp);
433 if ((h != conf->data) && (conf->data != NULL)) { 431 if ((h != conf->data) && (conf->data != NULL)) {
434 CONF_free(conf->data); 432 CONF_free(conf->data);
435 conf->data = NULL; 433 conf->data = NULL;
diff --git a/src/lib/libcrypto/conf/conf_lib.c b/src/lib/libcrypto/conf/conf_lib.c
index 469af6e825..35bdda3d64 100644
--- a/src/lib/libcrypto/conf/conf_lib.c
+++ b/src/lib/libcrypto/conf/conf_lib.c
@@ -329,7 +329,7 @@ NCONF_get_string(const CONF *conf, const char *group, const char *name)
329 return NULL; 329 return NULL;
330 } 330 }
331 CONFerr(CONF_F_NCONF_GET_STRING, CONF_R_NO_VALUE); 331 CONFerr(CONF_F_NCONF_GET_STRING, CONF_R_NO_VALUE);
332 ERR_add_error_data(4, "group=", group, " name=", name); 332 ERR_asprintf_error_data("group=%s name=%s", group, name);
333 return NULL; 333 return NULL;
334} 334}
335 335
diff --git a/src/lib/libcrypto/conf/conf_mod.c b/src/lib/libcrypto/conf/conf_mod.c
index 80266e43d8..b574104791 100644
--- a/src/lib/libcrypto/conf/conf_mod.c
+++ b/src/lib/libcrypto/conf/conf_mod.c
@@ -211,7 +211,7 @@ module_run(const CONF *cnf, char *name, char *value, unsigned long flags)
211 if (!md) { 211 if (!md) {
212 if (!(flags & CONF_MFLAGS_SILENT)) { 212 if (!(flags & CONF_MFLAGS_SILENT)) {
213 CONFerr(CONF_F_MODULE_RUN, CONF_R_UNKNOWN_MODULE_NAME); 213 CONFerr(CONF_F_MODULE_RUN, CONF_R_UNKNOWN_MODULE_NAME);
214 ERR_add_error_data(2, "module=", name); 214 ERR_asprintf_error_data("module=%s", name);
215 } 215 }
216 return -1; 216 return -1;
217 } 217 }
@@ -220,12 +220,11 @@ module_run(const CONF *cnf, char *name, char *value, unsigned long flags)
220 220
221 if (ret <= 0) { 221 if (ret <= 0) {
222 if (!(flags & CONF_MFLAGS_SILENT)) { 222 if (!(flags & CONF_MFLAGS_SILENT)) {
223 char rcode[DECIMAL_SIZE(ret) + 1];
224 CONFerr(CONF_F_MODULE_RUN, 223 CONFerr(CONF_F_MODULE_RUN,
225 CONF_R_MODULE_INITIALIZATION_ERROR); 224 CONF_R_MODULE_INITIALIZATION_ERROR);
226 snprintf(rcode, sizeof rcode, "%-8d", ret); 225 ERR_asprintf_error_data
227 ERR_add_error_data(6, "module=", name, ", value=", 226 ("module=%s, value=%s, retcode=%-8d",
228 value, ", retcode=", rcode); 227 name, value, ret);
229 } 228 }
230 } 229 }
231 230
@@ -272,7 +271,7 @@ err:
272 if (dso) 271 if (dso)
273 DSO_free(dso); 272 DSO_free(dso);
274 CONFerr(CONF_F_MODULE_LOAD_DSO, errcode); 273 CONFerr(CONF_F_MODULE_LOAD_DSO, errcode);
275 ERR_add_error_data(4, "module=", name, ", path=", path); 274 ERR_asprintf_error_data("module=%s, path=%s", name, path);
276 return NULL; 275 return NULL;
277} 276}
278 277
diff --git a/src/lib/libcrypto/dso/dso_dlfcn.c b/src/lib/libcrypto/dso/dso_dlfcn.c
index ea4e4935aa..6cf9ab2667 100644
--- a/src/lib/libcrypto/dso/dso_dlfcn.c
+++ b/src/lib/libcrypto/dso/dso_dlfcn.c
@@ -140,7 +140,8 @@ dlfcn_load(DSO *dso)
140 ptr = dlopen(filename, flags); 140 ptr = dlopen(filename, flags);
141 if (ptr == NULL) { 141 if (ptr == NULL) {
142 DSOerr(DSO_F_DLFCN_LOAD, DSO_R_LOAD_FAILED); 142 DSOerr(DSO_F_DLFCN_LOAD, DSO_R_LOAD_FAILED);
143 ERR_add_error_data(4, "filename(", filename, "): ", dlerror()); 143 ERR_asprintf_error_data("filename(%s): %s", filename,
144 dlerror());
144 goto err; 145 goto err;
145 } 146 }
146 if (!sk_void_push(dso->meth_data, (char *)ptr)) { 147 if (!sk_void_push(dso->meth_data, (char *)ptr)) {
@@ -204,7 +205,7 @@ dlfcn_bind_var(DSO *dso, const char *symname)
204 sym = dlsym(ptr, symname); 205 sym = dlsym(ptr, symname);
205 if (sym == NULL) { 206 if (sym == NULL) {
206 DSOerr(DSO_F_DLFCN_BIND_VAR, DSO_R_SYM_FAILURE); 207 DSOerr(DSO_F_DLFCN_BIND_VAR, DSO_R_SYM_FAILURE);
207 ERR_add_error_data(4, "symname(", symname, "): ", dlerror()); 208 ERR_asprintf_error_data("symname(%s): %s", symname, dlerror());
208 return (NULL); 209 return (NULL);
209 } 210 }
210 return (sym); 211 return (sym);
@@ -235,7 +236,7 @@ dlfcn_bind_func(DSO *dso, const char *symname)
235 u.dlret = dlsym(ptr, symname); 236 u.dlret = dlsym(ptr, symname);
236 if (u.dlret == NULL) { 237 if (u.dlret == NULL) {
237 DSOerr(DSO_F_DLFCN_BIND_FUNC, DSO_R_SYM_FAILURE); 238 DSOerr(DSO_F_DLFCN_BIND_FUNC, DSO_R_SYM_FAILURE);
238 ERR_add_error_data(4, "symname(", symname, "): ", dlerror()); 239 ERR_asprintf_error_data("symname(%s): %s", symname, dlerror());
239 return (NULL); 240 return (NULL);
240 } 241 }
241 return u.sym; 242 return u.sym;
@@ -348,7 +349,7 @@ dlfcn_pathbyaddr(void *addr, char *path, int sz)
348 return len; 349 return len;
349 } 350 }
350 351
351 ERR_add_error_data(4, "dlfcn_pathbyaddr(): ", dlerror()); 352 ERR_asprintf_error_data("dlfcn_pathbyaddr(): %s", dlerror());
352 return -1; 353 return -1;
353} 354}
354 355
diff --git a/src/lib/libcrypto/engine/eng_cnf.c b/src/lib/libcrypto/engine/eng_cnf.c
index 95c4070015..afb704e93b 100644
--- a/src/lib/libcrypto/engine/eng_cnf.c
+++ b/src/lib/libcrypto/engine/eng_cnf.c
@@ -203,9 +203,9 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf)
203 { 203 {
204 ENGINEerr(ENGINE_F_INT_ENGINE_CONFIGURE, ENGINE_R_ENGINE_CONFIGURATION_ERROR); 204 ENGINEerr(ENGINE_F_INT_ENGINE_CONFIGURE, ENGINE_R_ENGINE_CONFIGURATION_ERROR);
205 if (ecmd) 205 if (ecmd)
206 ERR_add_error_data(6, "section=", ecmd->section, 206 ERR_asprintf_error_data
207 ", name=", ecmd->name, 207 ("section=%s, name=%s, value=%s",
208 ", value=", ecmd->value); 208 ecmd->section, ecmd->name, ecmd->value);
209 } 209 }
210 if (e) 210 if (e)
211 ENGINE_free(e); 211 ENGINE_free(e);
diff --git a/src/lib/libcrypto/engine/eng_fat.c b/src/lib/libcrypto/engine/eng_fat.c
index 789b8d57e5..e01067566e 100644
--- a/src/lib/libcrypto/engine/eng_fat.c
+++ b/src/lib/libcrypto/engine/eng_fat.c
@@ -141,7 +141,7 @@ int ENGINE_set_default_string(ENGINE *e, const char *def_list)
141 { 141 {
142 ENGINEerr(ENGINE_F_ENGINE_SET_DEFAULT_STRING, 142 ENGINEerr(ENGINE_F_ENGINE_SET_DEFAULT_STRING,
143 ENGINE_R_INVALID_STRING); 143 ENGINE_R_INVALID_STRING);
144 ERR_add_error_data(2, "str=",def_list); 144 ERR_asprintf_error_data("str=%s",def_list);
145 return 0; 145 return 0;
146 } 146 }
147 return ENGINE_set_default(e, flags); 147 return ENGINE_set_default(e, flags);
diff --git a/src/lib/libcrypto/engine/eng_list.c b/src/lib/libcrypto/engine/eng_list.c
index 95c858960b..5528b5478f 100644
--- a/src/lib/libcrypto/engine/eng_list.c
+++ b/src/lib/libcrypto/engine/eng_list.c
@@ -389,7 +389,7 @@ ENGINE *ENGINE_by_id(const char *id)
389 { 389 {
390 ENGINEerr(ENGINE_F_ENGINE_BY_ID, 390 ENGINEerr(ENGINE_F_ENGINE_BY_ID,
391 ENGINE_R_NO_SUCH_ENGINE); 391 ENGINE_R_NO_SUCH_ENGINE);
392 ERR_add_error_data(2, "id=", id); 392 ERR_asprintf_error_data("id=%s", id);
393 } 393 }
394 return iterator; 394 return iterator;
395#else 395#else
@@ -416,7 +416,7 @@ ENGINE *ENGINE_by_id(const char *id)
416notfound: 416notfound:
417 ENGINE_free(iterator); 417 ENGINE_free(iterator);
418 ENGINEerr(ENGINE_F_ENGINE_BY_ID,ENGINE_R_NO_SUCH_ENGINE); 418 ENGINEerr(ENGINE_F_ENGINE_BY_ID,ENGINE_R_NO_SUCH_ENGINE);
419 ERR_add_error_data(2, "id=", id); 419 ERR_asprintf_error_data("id=%s", id);
420 return NULL; 420 return NULL;
421 /* EEK! Experimental code ends */ 421 /* EEK! Experimental code ends */
422#endif 422#endif
diff --git a/src/lib/libcrypto/evp/evp_pbe.c b/src/lib/libcrypto/evp/evp_pbe.c
index 37a926c3fc..37683af76a 100644
--- a/src/lib/libcrypto/evp/evp_pbe.c
+++ b/src/lib/libcrypto/evp/evp_pbe.c
@@ -167,7 +167,7 @@ int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
167 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM); 167 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM);
168 if (!pbe_obj) strlcpy (obj_tmp, "NULL", sizeof obj_tmp); 168 if (!pbe_obj) strlcpy (obj_tmp, "NULL", sizeof obj_tmp);
169 else i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj); 169 else i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj);
170 ERR_add_error_data(2, "TYPE=", obj_tmp); 170 ERR_asprintf_error_data("TYPE=%s", obj_tmp);
171 return 0; 171 return 0;
172 } 172 }
173 173
diff --git a/src/lib/libcrypto/evp/evp_pkey.c b/src/lib/libcrypto/evp/evp_pkey.c
index c760cf1965..94056f0da9 100644
--- a/src/lib/libcrypto/evp/evp_pkey.c
+++ b/src/lib/libcrypto/evp/evp_pkey.c
@@ -83,7 +83,7 @@ EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8)
83 { 83 {
84 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM); 84 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);
85 i2t_ASN1_OBJECT(obj_tmp, 80, algoid); 85 i2t_ASN1_OBJECT(obj_tmp, 80, algoid);
86 ERR_add_error_data(2, "TYPE=", obj_tmp); 86 ERR_asprintf_error_data("TYPE=%s", obj_tmp);
87 goto error; 87 goto error;
88 } 88 }
89 89
diff --git a/src/lib/libcrypto/ocsp/ocsp_ht.c b/src/lib/libcrypto/ocsp/ocsp_ht.c
index 4bb6fce83c..b45eaf6767 100644
--- a/src/lib/libcrypto/ocsp/ocsp_ht.c
+++ b/src/lib/libcrypto/ocsp/ocsp_ht.c
@@ -259,9 +259,9 @@ static int parse_http_line1(char *line)
259 { 259 {
260 OCSPerr(OCSP_F_PARSE_HTTP_LINE1, OCSP_R_SERVER_RESPONSE_ERROR); 260 OCSPerr(OCSP_F_PARSE_HTTP_LINE1, OCSP_R_SERVER_RESPONSE_ERROR);
261 if(!*q) 261 if(!*q)
262 ERR_add_error_data(2, "Code=", p); 262 ERR_asprintf_error_data("Code=%s", p);
263 else 263 else
264 ERR_add_error_data(4, "Code=", p, ",Reason=", q); 264 ERR_asprintf_error_data("Code=%s,Reason=%s", p, q);
265 return 0; 265 return 0;
266 } 266 }
267 267
diff --git a/src/lib/libcrypto/ocsp/ocsp_vfy.c b/src/lib/libcrypto/ocsp/ocsp_vfy.c
index 276718304d..0b181d5abe 100644
--- a/src/lib/libcrypto/ocsp/ocsp_vfy.c
+++ b/src/lib/libcrypto/ocsp/ocsp_vfy.c
@@ -122,9 +122,9 @@ int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
122 X509_STORE_CTX_cleanup(&ctx); 122 X509_STORE_CTX_cleanup(&ctx);
123 if (ret <= 0) 123 if (ret <= 0)
124 { 124 {
125 i = X509_STORE_CTX_get_error(&ctx); 125 i = X509_STORE_CTX_get_error(&ctx);
126 OCSPerr(OCSP_F_OCSP_BASIC_VERIFY,OCSP_R_CERTIFICATE_VERIFY_ERROR); 126 OCSPerr(OCSP_F_OCSP_BASIC_VERIFY,OCSP_R_CERTIFICATE_VERIFY_ERROR);
127 ERR_add_error_data(2, "Verify error:", 127 ERR_asprintf_error_data("Verify error:%s",
128 X509_verify_cert_error_string(i)); 128 X509_verify_cert_error_string(i));
129 goto end; 129 goto end;
130 } 130 }
@@ -421,7 +421,7 @@ int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, X509_STORE *st
421 { 421 {
422 ret = X509_STORE_CTX_get_error(&ctx); 422 ret = X509_STORE_CTX_get_error(&ctx);
423 OCSPerr(OCSP_F_OCSP_REQUEST_VERIFY,OCSP_R_CERTIFICATE_VERIFY_ERROR); 423 OCSPerr(OCSP_F_OCSP_REQUEST_VERIFY,OCSP_R_CERTIFICATE_VERIFY_ERROR);
424 ERR_add_error_data(2, "Verify error:", 424 ERR_asprintf_error_data("Verify error:%s",
425 X509_verify_cert_error_string(ret)); 425 X509_verify_cert_error_string(ret));
426 return 0; 426 return 0;
427 } 427 }
diff --git a/src/lib/libcrypto/pem/pem_lib.c b/src/lib/libcrypto/pem/pem_lib.c
index c670ac2acb..9bc2b27285 100644
--- a/src/lib/libcrypto/pem/pem_lib.c
+++ b/src/lib/libcrypto/pem/pem_lib.c
@@ -289,7 +289,7 @@ PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm,
289 if (!PEM_read_bio(bp, &nm, &header, &data, &len)) { 289 if (!PEM_read_bio(bp, &nm, &header, &data, &len)) {
290 if (ERR_GET_REASON(ERR_peek_error()) == 290 if (ERR_GET_REASON(ERR_peek_error()) ==
291 PEM_R_NO_START_LINE) 291 PEM_R_NO_START_LINE)
292 ERR_add_error_data(2, "Expecting: ", name); 292 ERR_asprintf_error_data("Expecting: %s", name);
293 return 0; 293 return 0;
294 } 294 }
295 if (check_pem(nm, name)) 295 if (check_pem(nm, name))
diff --git a/src/lib/libcrypto/pkcs7/bio_ber.c b/src/lib/libcrypto/pkcs7/bio_ber.c
index 04dc5c9b96..d787495a21 100644
--- a/src/lib/libcrypto/pkcs7/bio_ber.c
+++ b/src/lib/libcrypto/pkcs7/bio_ber.c
@@ -155,7 +155,6 @@ static int ber_free(BIO *a)
155 155
156int bio_ber_get_header(BIO *bio, BIO_BER_CTX *ctx) 156int bio_ber_get_header(BIO *bio, BIO_BER_CTX *ctx)
157 { 157 {
158 char buf[64];
159 int i,j,n; 158 int i,j,n;
160 int ret; 159 int ret;
161 unsigned char *p; 160 unsigned char *p;
@@ -215,8 +214,7 @@ int bio_ber_get_header(BIO *bio, BIO_BER_CTX *ctx)
215 if ((ctx->tag >= 0) && (ctx->tag != tag)) 214 if ((ctx->tag >= 0) && (ctx->tag != tag))
216 { 215 {
217 BIOerr(BIO_F_BIO_BER_GET_HEADER,BIO_R_TAG_MISMATCH); 216 BIOerr(BIO_F_BIO_BER_GET_HEADER,BIO_R_TAG_MISMATCH);
218 sprintf(buf,"tag=%d, got %d",ctx->tag,tag); 217 ERR_asprintf_error_data("tag=%d, got %d", ctx->tag, tag);
219 ERR_add_error_data(1,buf);
220 return(-1); 218 return(-1);
221 } 219 }
222 if (ret & 0x01) 220 if (ret & 0x01)
diff --git a/src/lib/libcrypto/pkcs7/pk7_smime.c b/src/lib/libcrypto/pkcs7/pk7_smime.c
index a5104f8d05..6d6bd46b62 100644
--- a/src/lib/libcrypto/pkcs7/pk7_smime.c
+++ b/src/lib/libcrypto/pkcs7/pk7_smime.c
@@ -340,7 +340,7 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
340 X509_STORE_CTX_cleanup(&cert_ctx); 340 X509_STORE_CTX_cleanup(&cert_ctx);
341 if (i <= 0) { 341 if (i <= 0) {
342 PKCS7err(PKCS7_F_PKCS7_VERIFY,PKCS7_R_CERTIFICATE_VERIFY_ERROR); 342 PKCS7err(PKCS7_F_PKCS7_VERIFY,PKCS7_R_CERTIFICATE_VERIFY_ERROR);
343 ERR_add_error_data(2, "Verify error:", 343 ERR_asprintf_error_data("Verify error:%s",
344 X509_verify_cert_error_string(j)); 344 X509_verify_cert_error_string(j));
345 sk_X509_free(signers); 345 sk_X509_free(signers);
346 return 0; 346 return 0;
diff --git a/src/lib/libcrypto/ts/ts_conf.c b/src/lib/libcrypto/ts/ts_conf.c
index f8cf3b514c..12cce16bc8 100644
--- a/src/lib/libcrypto/ts/ts_conf.c
+++ b/src/lib/libcrypto/ts/ts_conf.c
@@ -239,7 +239,7 @@ err:
239 if (!ret) { 239 if (!ret) {
240 TSerr(TS_F_TS_CONF_SET_DEFAULT_ENGINE, 240 TSerr(TS_F_TS_CONF_SET_DEFAULT_ENGINE,
241 TS_R_COULD_NOT_SET_ENGINE); 241 TS_R_COULD_NOT_SET_ENGINE);
242 ERR_add_error_data(2, "engine:", name); 242 ERR_asprintf_error_data("engine:%s", name);
243 } 243 }
244 if (e) 244 if (e)
245 ENGINE_free(e); 245 ENGINE_free(e);
diff --git a/src/lib/libcrypto/ts/ts_rsp_verify.c b/src/lib/libcrypto/ts/ts_rsp_verify.c
index 66e35dab3a..2a4c0c5ef9 100644
--- a/src/lib/libcrypto/ts/ts_rsp_verify.c
+++ b/src/lib/libcrypto/ts/ts_rsp_verify.c
@@ -244,7 +244,7 @@ TS_verify_cert(X509_STORE *store, STACK_OF(X509) *untrusted, X509 *signer,
244 if (i <= 0) { 244 if (i <= 0) {
245 int j = X509_STORE_CTX_get_error(&cert_ctx); 245 int j = X509_STORE_CTX_get_error(&cert_ctx);
246 TSerr(TS_F_TS_VERIFY_CERT, TS_R_CERTIFICATE_VERIFY_ERROR); 246 TSerr(TS_F_TS_VERIFY_CERT, TS_R_CERTIFICATE_VERIFY_ERROR);
247 ERR_add_error_data(2, "Verify error:", 247 ERR_asprintf_error_data("Verify error:%s",
248 X509_verify_cert_error_string(j)); 248 X509_verify_cert_error_string(j));
249 ret = 0; 249 ret = 0;
250 } else { 250 } else {
@@ -530,11 +530,11 @@ TS_check_status_info(TS_RESP *response)
530 530
531 /* Making up the error string. */ 531 /* Making up the error string. */
532 TSerr(TS_F_TS_CHECK_STATUS_INFO, TS_R_NO_TIME_STAMP_TOKEN); 532 TSerr(TS_F_TS_CHECK_STATUS_INFO, TS_R_NO_TIME_STAMP_TOKEN);
533 ERR_add_error_data(6, 533 ERR_asprintf_error_data
534 "status code: ", status_text, 534 ("status code: %s, status text: %s, failure codes: %s",
535 ", status text: ", embedded_status_text ? 535 status_text,
536 embedded_status_text : "unspecified", 536 embedded_status_text ? embedded_status_text : "unspecified",
537 ", failure codes: ", failure_text); 537 failure_text);
538 free(embedded_status_text); 538 free(embedded_status_text);
539 539
540 return 0; 540 return 0;
diff --git a/src/lib/libcrypto/ui/ui_lib.c b/src/lib/libcrypto/ui/ui_lib.c
index ee76e5e64d..5335b59c48 100644
--- a/src/lib/libcrypto/ui/ui_lib.c
+++ b/src/lib/libcrypto/ui/ui_lib.c
@@ -827,31 +827,26 @@ UI_set_result(UI *ui, UI_STRING *uis, const char *result)
827 switch (uis->type) { 827 switch (uis->type) {
828 case UIT_PROMPT: 828 case UIT_PROMPT:
829 case UIT_VERIFY: 829 case UIT_VERIFY:
830 { 830 if (l < uis->_.string_data.result_minsize) {
831 char number1[DECIMAL_SIZE(uis->_.string_data.result_minsize) + 1]; 831 ui->flags |= UI_FLAG_REDOABLE;
832 char number2[DECIMAL_SIZE(uis->_.string_data.result_maxsize) + 1]; 832 UIerr(UI_F_UI_SET_RESULT,
833 833 UI_R_RESULT_TOO_SMALL);
834 (void) snprintf(number1, sizeof(number1), "%d", 834 ERR_asprintf_error_data
835 uis->_.string_data.result_minsize); 835 ("You must type in %d to %d characters",
836 (void) snprintf(number2, sizeof(number2), "%d", 836 uis->_.string_data.result_minsize,
837 uis->_.string_data.result_maxsize); 837 uis->_.string_data.result_maxsize);
838 838 return -1;
839 if (l < uis->_.string_data.result_minsize) { 839 }
840 ui->flags |= UI_FLAG_REDOABLE; 840 if (l > uis->_.string_data.result_maxsize) {
841 UIerr(UI_F_UI_SET_RESULT, UI_R_RESULT_TOO_SMALL); 841 ui->flags |= UI_FLAG_REDOABLE;
842 ERR_add_error_data(5, "You must type in ", 842 UIerr(UI_F_UI_SET_RESULT,
843 number1, " to ", number2, " characters"); 843 UI_R_RESULT_TOO_LARGE);
844 return -1; 844 ERR_asprintf_error_data
845 } 845 ("You must type in %d to %d characters",
846 if (l > uis->_.string_data.result_maxsize) { 846 uis->_.string_data.result_minsize,
847 ui->flags |= UI_FLAG_REDOABLE; 847 uis->_.string_data.result_maxsize);
848 UIerr(UI_F_UI_SET_RESULT, UI_R_RESULT_TOO_LARGE); 848 return -1;
849 ERR_add_error_data(5, "You must type in ",
850 number1, " to ", number2, " characters");
851 return -1;
852 }
853 } 849 }
854
855 if (!uis->result_buf) { 850 if (!uis->result_buf) {
856 UIerr(UI_F_UI_SET_RESULT, UI_R_NO_RESULT_BUFFER); 851 UIerr(UI_F_UI_SET_RESULT, UI_R_NO_RESULT_BUFFER);
857 return -1; 852 return -1;
diff --git a/src/lib/libcrypto/x509/x509_att.c b/src/lib/libcrypto/x509/x509_att.c
index 5699568998..ef922c7c83 100644
--- a/src/lib/libcrypto/x509/x509_att.c
+++ b/src/lib/libcrypto/x509/x509_att.c
@@ -282,7 +282,7 @@ X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, const char *atrname,
282 if (obj == NULL) { 282 if (obj == NULL) {
283 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_TXT, 283 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_TXT,
284 X509_R_INVALID_FIELD_NAME); 284 X509_R_INVALID_FIELD_NAME);
285 ERR_add_error_data(2, "name=", atrname); 285 ERR_asprintf_error_data("name=%s", atrname);
286 return (NULL); 286 return (NULL);
287 } 287 }
288 nattr = X509_ATTRIBUTE_create_by_OBJ(attr, obj, type, bytes, len); 288 nattr = X509_ATTRIBUTE_create_by_OBJ(attr, obj, type, bytes, len);
diff --git a/src/lib/libcrypto/x509/x509name.c b/src/lib/libcrypto/x509/x509name.c
index 3d90fd67fe..32fce2debb 100644
--- a/src/lib/libcrypto/x509/x509name.c
+++ b/src/lib/libcrypto/x509/x509name.c
@@ -298,7 +298,7 @@ X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
298 if (obj == NULL) { 298 if (obj == NULL) {
299 X509err(X509_F_X509_NAME_ENTRY_CREATE_BY_TXT, 299 X509err(X509_F_X509_NAME_ENTRY_CREATE_BY_TXT,
300 X509_R_INVALID_FIELD_NAME); 300 X509_R_INVALID_FIELD_NAME);
301 ERR_add_error_data(2, "name=", field); 301 ERR_asprintf_error_data("name=%s", field);
302 return (NULL); 302 return (NULL);
303 } 303 }
304 nentry = X509_NAME_ENTRY_create_by_OBJ(ne, obj, type, bytes, len); 304 nentry = X509_NAME_ENTRY_create_by_OBJ(ne, obj, type, bytes, len);
diff --git a/src/lib/libcrypto/x509v3/v3_akey.c b/src/lib/libcrypto/x509v3/v3_akey.c
index 6d5c576e23..a5d760d469 100644
--- a/src/lib/libcrypto/x509v3/v3_akey.c
+++ b/src/lib/libcrypto/x509v3/v3_akey.c
@@ -139,7 +139,7 @@ v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
139 } else { 139 } else {
140 X509V3err(X509V3_F_V2I_AUTHORITY_KEYID, 140 X509V3err(X509V3_F_V2I_AUTHORITY_KEYID,
141 X509V3_R_UNKNOWN_OPTION); 141 X509V3_R_UNKNOWN_OPTION);
142 ERR_add_error_data(2, "name=", cnf->name); 142 ERR_asprintf_error_data("name=%s", cnf->name);
143 return NULL; 143 return NULL;
144 } 144 }
145 } 145 }
diff --git a/src/lib/libcrypto/x509v3/v3_alt.c b/src/lib/libcrypto/x509v3/v3_alt.c
index e61ed673c0..61b0c90fad 100644
--- a/src/lib/libcrypto/x509v3/v3_alt.c
+++ b/src/lib/libcrypto/x509v3/v3_alt.c
@@ -479,7 +479,7 @@ a2i_GENERAL_NAME(GENERAL_NAME *out, const X509V3_EXT_METHOD *method,
479 if (!(obj = OBJ_txt2obj(value, 0))) { 479 if (!(obj = OBJ_txt2obj(value, 0))) {
480 X509V3err(X509V3_F_A2I_GENERAL_NAME, 480 X509V3err(X509V3_F_A2I_GENERAL_NAME,
481 X509V3_R_BAD_OBJECT); 481 X509V3_R_BAD_OBJECT);
482 ERR_add_error_data(2, "value=", value); 482 ERR_asprintf_error_data("value=%s", value);
483 goto err; 483 goto err;
484 } 484 }
485 gen->d.rid = obj; 485 gen->d.rid = obj;
@@ -494,7 +494,7 @@ a2i_GENERAL_NAME(GENERAL_NAME *out, const X509V3_EXT_METHOD *method,
494 if (gen->d.ip == NULL) { 494 if (gen->d.ip == NULL) {
495 X509V3err(X509V3_F_A2I_GENERAL_NAME, 495 X509V3err(X509V3_F_A2I_GENERAL_NAME,
496 X509V3_R_BAD_IP_ADDRESS); 496 X509V3_R_BAD_IP_ADDRESS);
497 ERR_add_error_data(2, "value=", value); 497 ERR_asprintf_error_data("value=%s", value);
498 goto err; 498 goto err;
499 } 499 }
500 break; 500 break;
@@ -572,7 +572,7 @@ v2i_GENERAL_NAME_ex(GENERAL_NAME *out, const X509V3_EXT_METHOD *method,
572 else { 572 else {
573 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX, 573 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,
574 X509V3_R_UNSUPPORTED_OPTION); 574 X509V3_R_UNSUPPORTED_OPTION);
575 ERR_add_error_data(2, "name=", name); 575 ERR_asprintf_error_data("name=%s", name);
576 return NULL; 576 return NULL;
577 } 577 }
578 578
@@ -620,7 +620,7 @@ do_dirname(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx)
620 sk = X509V3_get_section(ctx, value); 620 sk = X509V3_get_section(ctx, value);
621 if (!sk) { 621 if (!sk) {
622 X509V3err(X509V3_F_DO_DIRNAME, X509V3_R_SECTION_NOT_FOUND); 622 X509V3err(X509V3_F_DO_DIRNAME, X509V3_R_SECTION_NOT_FOUND);
623 ERR_add_error_data(2, "section=", value); 623 ERR_asprintf_error_data("section=%s", value);
624 X509_NAME_free(nm); 624 X509_NAME_free(nm);
625 return 0; 625 return 0;
626 } 626 }
diff --git a/src/lib/libcrypto/x509v3/v3_conf.c b/src/lib/libcrypto/x509v3/v3_conf.c
index daacf8d5df..e22aa50fcd 100644
--- a/src/lib/libcrypto/x509v3/v3_conf.c
+++ b/src/lib/libcrypto/x509v3/v3_conf.c
@@ -94,7 +94,7 @@ X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, char *value)
94 if (!ret) { 94 if (!ret) {
95 X509V3err(X509V3_F_X509V3_EXT_NCONF, 95 X509V3err(X509V3_F_X509V3_EXT_NCONF,
96 X509V3_R_ERROR_IN_EXTENSION); 96 X509V3_R_ERROR_IN_EXTENSION);
97 ERR_add_error_data(4, "name=", name, ", value=", value); 97 ERR_asprintf_error_data("name=%s, value=%s", name, value);
98 } 98 }
99 return ret; 99 return ret;
100} 100}
@@ -142,8 +142,8 @@ do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid, int crit, char *value)
142 if (sk_CONF_VALUE_num(nval) <= 0) { 142 if (sk_CONF_VALUE_num(nval) <= 0) {
143 X509V3err(X509V3_F_DO_EXT_NCONF, 143 X509V3err(X509V3_F_DO_EXT_NCONF,
144 X509V3_R_INVALID_EXTENSION_STRING); 144 X509V3_R_INVALID_EXTENSION_STRING);
145 ERR_add_error_data(4, "name=", OBJ_nid2sn(ext_nid), 145 ERR_asprintf_error_data("name=%s,section=%s",
146 ",section=", value); 146 OBJ_nid2sn(ext_nid), value);
147 return NULL; 147 return NULL;
148 } 148 }
149 ext_struc = method->v2i(method, ctx, nval); 149 ext_struc = method->v2i(method, ctx, nval);
@@ -165,7 +165,7 @@ do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid, int crit, char *value)
165 } else { 165 } else {
166 X509V3err(X509V3_F_DO_EXT_NCONF, 166 X509V3err(X509V3_F_DO_EXT_NCONF,
167 X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED); 167 X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED);
168 ERR_add_error_data(2, "name=", OBJ_nid2sn(ext_nid)); 168 ERR_asprintf_error_data("name=%s", OBJ_nid2sn(ext_nid));
169 return NULL; 169 return NULL;
170 } 170 }
171 171
@@ -283,7 +283,7 @@ v3_generic_extension(const char *ext, char *value, int crit, int gen_type,
283 if (!(obj = OBJ_txt2obj(ext, 0))) { 283 if (!(obj = OBJ_txt2obj(ext, 0))) {
284 X509V3err(X509V3_F_V3_GENERIC_EXTENSION, 284 X509V3err(X509V3_F_V3_GENERIC_EXTENSION,
285 X509V3_R_EXTENSION_NAME_ERROR); 285 X509V3_R_EXTENSION_NAME_ERROR);
286 ERR_add_error_data(2, "name=", ext); 286 ERR_asprintf_error_data("name=%s", ext);
287 goto err; 287 goto err;
288 } 288 }
289 289
@@ -295,7 +295,7 @@ v3_generic_extension(const char *ext, char *value, int crit, int gen_type,
295 if (ext_der == NULL) { 295 if (ext_der == NULL) {
296 X509V3err(X509V3_F_V3_GENERIC_EXTENSION, 296 X509V3err(X509V3_F_V3_GENERIC_EXTENSION,
297 X509V3_R_EXTENSION_VALUE_ERROR); 297 X509V3_R_EXTENSION_VALUE_ERROR);
298 ERR_add_error_data(2, "value=", value); 298 ERR_asprintf_error_data("value=%s", value);
299 goto err; 299 goto err;
300 } 300 }
301 301
diff --git a/src/lib/libcrypto/x509v3/v3_info.c b/src/lib/libcrypto/x509v3/v3_info.c
index 7853e3e23b..9ae1596b1f 100644
--- a/src/lib/libcrypto/x509v3/v3_info.c
+++ b/src/lib/libcrypto/x509v3/v3_info.c
@@ -184,12 +184,10 @@ v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
184 if (!acc->method) { 184 if (!acc->method) {
185 X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, 185 X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,
186 X509V3_R_BAD_OBJECT); 186 X509V3_R_BAD_OBJECT);
187 ERR_add_error_data(2, "value=", objtmp); 187 ERR_asprintf_error_data("value=%s", objtmp);
188 free(objtmp);
189 goto err; 188 goto err;
190 } 189 }
191 free(objtmp); 190 free(objtmp);
192
193 } 191 }
194 return ainfo; 192 return ainfo;
195 193
diff --git a/src/lib/libcrypto/x509v3/x509v3.h b/src/lib/libcrypto/x509v3/x509v3.h
index b308abe7cd..dda5344b33 100644
--- a/src/lib/libcrypto/x509v3/x509v3.h
+++ b/src/lib/libcrypto/x509v3/x509v3.h
@@ -379,8 +379,9 @@ struct ISSUING_DIST_POINT_st
379/* onlysomereasons present */ 379/* onlysomereasons present */
380#define IDP_REASONS 0x40 380#define IDP_REASONS 0x40
381 381
382#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \ 382#define X509V3_conf_err(val) ERR_asprintf_error_data( \
383",name:", val->name, ",value:", val->value); 383 "section:%s,name:%s,value:%s", val->section, \
384 val->name, val->value);
384 385
385#define X509V3_set_ctx_test(ctx) \ 386#define X509V3_set_ctx_test(ctx) \
386 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) 387 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
diff --git a/src/lib/libssl/d1_pkt.c b/src/lib/libssl/d1_pkt.c
index 7cfada4e6b..c5bdb41b90 100644
--- a/src/lib/libssl/d1_pkt.c
+++ b/src/lib/libssl/d1_pkt.c
@@ -1109,13 +1109,11 @@ start:
1109#endif 1109#endif
1110 } else if (alert_level == 2) /* fatal */ 1110 } else if (alert_level == 2) /* fatal */
1111 { 1111 {
1112 char tmp[16];
1113
1114 s->rwstate = SSL_NOTHING; 1112 s->rwstate = SSL_NOTHING;
1115 s->s3->fatal_alert = alert_descr; 1113 s->s3->fatal_alert = alert_descr;
1116 SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr); 1114 SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr);
1117 (void) snprintf(tmp,sizeof tmp,"%d",alert_descr); 1115 ERR_asprintf_error_data("SSL alert number %d",
1118 ERR_add_error_data(2, "SSL alert number ", tmp); 1116 alert_descr);
1119 s->shutdown|=SSL_RECEIVED_SHUTDOWN; 1117 s->shutdown|=SSL_RECEIVED_SHUTDOWN;
1120 SSL_CTX_remove_session(s->ctx, s->session); 1118 SSL_CTX_remove_session(s->ctx, s->session);
1121 return (0); 1119 return (0);
diff --git a/src/lib/libssl/s3_pkt.c b/src/lib/libssl/s3_pkt.c
index 68c3f1cb2b..4a8462ecb9 100644
--- a/src/lib/libssl/s3_pkt.c
+++ b/src/lib/libssl/s3_pkt.c
@@ -1169,13 +1169,11 @@ start:
1169#endif 1169#endif
1170 } else if (alert_level == 2) { 1170 } else if (alert_level == 2) {
1171 /* fatal */ 1171 /* fatal */
1172 char tmp[16];
1173
1174 s->rwstate = SSL_NOTHING; 1172 s->rwstate = SSL_NOTHING;
1175 s->s3->fatal_alert = alert_descr; 1173 s->s3->fatal_alert = alert_descr;
1176 SSLerr(SSL_F_SSL3_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr); 1174 SSLerr(SSL_F_SSL3_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr);
1177 (void) snprintf(tmp, sizeof tmp, "%d", alert_descr); 1175 ERR_asprintf_error_data("SSL alert number %d",
1178 ERR_add_error_data(2, "SSL alert number ", tmp); 1176 alert_descr);
1179 s->shutdown|=SSL_RECEIVED_SHUTDOWN; 1177 s->shutdown|=SSL_RECEIVED_SHUTDOWN;
1180 SSL_CTX_remove_session(s->ctx, s->session); 1178 SSL_CTX_remove_session(s->ctx, s->session);
1181 return (0); 1179 return (0);
diff --git a/src/lib/libssl/src/crypto/asn1/a_mbstr.c b/src/lib/libssl/src/crypto/asn1/a_mbstr.c
index b59d84910f..9945ede2ac 100644
--- a/src/lib/libssl/src/crypto/asn1/a_mbstr.c
+++ b/src/lib/libssl/src/crypto/asn1/a_mbstr.c
@@ -98,7 +98,6 @@ ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
98 ASN1_STRING *dest; 98 ASN1_STRING *dest;
99 unsigned char *p; 99 unsigned char *p;
100 int nchar; 100 int nchar;
101 char strbuf[32];
102 int (*cpyfunc)(unsigned long, void *) = NULL; 101 int (*cpyfunc)(unsigned long, void *) = NULL;
103 102
104 if (len == -1) 103 if (len == -1)
@@ -148,15 +147,13 @@ ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
148 147
149 if ((minsize > 0) && (nchar < minsize)) { 148 if ((minsize > 0) && (nchar < minsize)) {
150 ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_SHORT); 149 ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_SHORT);
151 snprintf(strbuf, sizeof strbuf, "%ld", minsize); 150 ERR_asprintf_error_data("minsize=%ld", minsize);
152 ERR_add_error_data(2, "minsize=", strbuf);
153 return -1; 151 return -1;
154 } 152 }
155 153
156 if ((maxsize > 0) && (nchar > maxsize)) { 154 if ((maxsize > 0) && (nchar > maxsize)) {
157 ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_LONG); 155 ASN1err(ASN1_F_ASN1_MBSTRING_NCOPY, ASN1_R_STRING_TOO_LONG);
158 snprintf(strbuf, sizeof strbuf, "%ld", maxsize); 156 ERR_asprintf_error_data("maxsize=%ld", maxsize);
159 ERR_add_error_data(2, "maxsize=", strbuf);
160 return -1; 157 return -1;
161 } 158 }
162 159
diff --git a/src/lib/libssl/src/crypto/asn1/asn1_gen.c b/src/lib/libssl/src/crypto/asn1/asn1_gen.c
index c66bea2ab4..598a322242 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1_gen.c
+++ b/src/lib/libssl/src/crypto/asn1/asn1_gen.c
@@ -291,7 +291,7 @@ asn1_cb(const char *elem, int len, void *bitstr)
291 291
292 if (utype == -1) { 292 if (utype == -1) {
293 ASN1err(ASN1_F_ASN1_CB, ASN1_R_UNKNOWN_TAG); 293 ASN1err(ASN1_F_ASN1_CB, ASN1_R_UNKNOWN_TAG);
294 ERR_add_error_data(2, "tag=", elem); 294 ERR_asprintf_error_data("tag=%s", elem);
295 return -1; 295 return -1;
296 } 296 }
297 297
@@ -370,7 +370,6 @@ asn1_cb(const char *elem, int len, void *bitstr)
370static int 370static int
371parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass) 371parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass)
372{ 372{
373 char erch[2];
374 long tag_num; 373 long tag_num;
375 char *eptr; 374 char *eptr;
376 375
@@ -410,10 +409,8 @@ parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass)
410 break; 409 break;
411 410
412 default: 411 default:
413 erch[0] = *eptr;
414 erch[1] = 0;
415 ASN1err(ASN1_F_PARSE_TAGGING, ASN1_R_INVALID_MODIFIER); 412 ASN1err(ASN1_F_PARSE_TAGGING, ASN1_R_INVALID_MODIFIER);
416 ERR_add_error_data(2, "Char=", erch); 413 ERR_asprintf_error_data("Char=%c", *eptr);
417 return 0; 414 return 0;
418 break; 415 break;
419 416
@@ -777,7 +774,7 @@ asn1_str2type(const char *str, int format, int utype)
777 return atmp; 774 return atmp;
778 775
779bad_str: 776bad_str:
780 ERR_add_error_data(2, "string=", str); 777 ERR_asprintf_error_data("string=%s", str);
781bad_form: 778bad_form:
782 ASN1_TYPE_free(atmp); 779 ASN1_TYPE_free(atmp);
783 return NULL; 780 return NULL;
diff --git a/src/lib/libssl/src/crypto/asn1/asn1_lib.c b/src/lib/libssl/src/crypto/asn1/asn1_lib.c
index 4d4368aefe..c2f0837a1c 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1_lib.c
+++ b/src/lib/libssl/src/crypto/asn1/asn1_lib.c
@@ -459,10 +459,7 @@ ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b)
459void 459void
460asn1_add_error(const unsigned char *address, int offset) 460asn1_add_error(const unsigned char *address, int offset)
461{ 461{
462 char tmp[128]; 462 ERR_asprintf_error_data("address=%p offset=%d", address, offset);
463 (void) snprintf(tmp, sizeof(tmp), "address=%p offset=%d",
464 address, offset);
465 ERR_add_error_data(1, tmp);
466} 463}
467 464
468int 465int
diff --git a/src/lib/libssl/src/crypto/asn1/asn_mime.c b/src/lib/libssl/src/crypto/asn1/asn_mime.c
index 248ea114e8..b30c366561 100644
--- a/src/lib/libssl/src/crypto/asn1/asn_mime.c
+++ b/src/lib/libssl/src/crypto/asn1/asn_mime.c
@@ -493,7 +493,7 @@ SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it)
493 strcmp(hdr->value, "application/pkcs7-signature")) { 493 strcmp(hdr->value, "application/pkcs7-signature")) {
494 ASN1err(ASN1_F_SMIME_READ_ASN1, 494 ASN1err(ASN1_F_SMIME_READ_ASN1,
495 ASN1_R_SIG_INVALID_MIME_TYPE); 495 ASN1_R_SIG_INVALID_MIME_TYPE);
496 ERR_add_error_data(2, "type: ", hdr->value); 496 ERR_asprintf_error_data("type: %s", hdr->value);
497 sk_MIME_HEADER_pop_free(headers, mime_hdr_free); 497 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
498 sk_BIO_pop_free(parts, BIO_vfree); 498 sk_BIO_pop_free(parts, BIO_vfree);
499 return NULL; 499 return NULL;
@@ -520,7 +520,7 @@ SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it)
520 if (strcmp (hdr->value, "application/x-pkcs7-mime") && 520 if (strcmp (hdr->value, "application/x-pkcs7-mime") &&
521 strcmp (hdr->value, "application/pkcs7-mime")) { 521 strcmp (hdr->value, "application/pkcs7-mime")) {
522 ASN1err(ASN1_F_SMIME_READ_ASN1, ASN1_R_INVALID_MIME_TYPE); 522 ASN1err(ASN1_F_SMIME_READ_ASN1, ASN1_R_INVALID_MIME_TYPE);
523 ERR_add_error_data(2, "type: ", hdr->value); 523 ERR_asprintf_error_data("type: %s", hdr->value);
524 sk_MIME_HEADER_pop_free(headers, mime_hdr_free); 524 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
525 return NULL; 525 return NULL;
526 } 526 }
@@ -591,7 +591,7 @@ SMIME_text(BIO *in, BIO *out)
591 } 591 }
592 if (strcmp (hdr->value, "text/plain")) { 592 if (strcmp (hdr->value, "text/plain")) {
593 ASN1err(ASN1_F_SMIME_TEXT, ASN1_R_INVALID_MIME_TYPE); 593 ASN1err(ASN1_F_SMIME_TEXT, ASN1_R_INVALID_MIME_TYPE);
594 ERR_add_error_data(2, "type: ", hdr->value); 594 ERR_asprintf_error_data("type: %s", hdr->value);
595 sk_MIME_HEADER_pop_free(headers, mime_hdr_free); 595 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
596 return 0; 596 return 0;
597 } 597 }
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_dec.c b/src/lib/libssl/src/crypto/asn1/tasn_dec.c
index 560b6f3d5f..d86bc4e091 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_dec.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_dec.c
@@ -496,10 +496,10 @@ auxerr:
496err: 496err:
497 ASN1_item_ex_free(pval, it); 497 ASN1_item_ex_free(pval, it);
498 if (errtt) 498 if (errtt)
499 ERR_add_error_data(4, "Field=", errtt->field_name, 499 ERR_asprintf_error_data("Field=%s, Type=%s", errtt->field_name,
500 ", Type=", it->sname); 500 it->sname);
501 else 501 else
502 ERR_add_error_data(2, "Type=", it->sname); 502 ERR_asprintf_error_data("Type=%s", it->sname);
503 return 0; 503 return 0;
504} 504}
505 505
diff --git a/src/lib/libssl/src/crypto/bio/b_sock.c b/src/lib/libssl/src/crypto/bio/b_sock.c
index 05eb362cc6..ecfaf93b99 100644
--- a/src/lib/libssl/src/crypto/bio/b_sock.c
+++ b/src/lib/libssl/src/crypto/bio/b_sock.c
@@ -129,7 +129,7 @@ err:
129 if (locked) 129 if (locked)
130 CRYPTO_w_unlock(CRYPTO_LOCK_GETHOSTBYNAME); 130 CRYPTO_w_unlock(CRYPTO_LOCK_GETHOSTBYNAME);
131 if (err) { 131 if (err) {
132 ERR_add_error_data(2, "host=", str); 132 ERR_asprintf_error_data("host=%s", str);
133 return 0; 133 return 0;
134 } else 134 } else
135 return 1; 135 return 1;
@@ -171,7 +171,7 @@ BIO_get_port(const char *str, unsigned short *port_ptr)
171 *port_ptr = 70; 171 *port_ptr = 70;
172 else { 172 else {
173 SYSerr(SYS_F_GETSERVBYNAME, errno); 173 SYSerr(SYS_F_GETSERVBYNAME, errno);
174 ERR_add_error_data(3, "service='", str, "'"); 174 ERR_asprintf_error_data("service='%s'", str);
175 return (0); 175 return (0);
176 } 176 }
177 } 177 }
@@ -378,7 +378,7 @@ again:
378 s = socket(server.sa.sa_family, SOCK_STREAM, SOCKET_PROTOCOL); 378 s = socket(server.sa.sa_family, SOCK_STREAM, SOCKET_PROTOCOL);
379 if (s == -1) { 379 if (s == -1) {
380 SYSerr(SYS_F_SOCKET, errno); 380 SYSerr(SYS_F_SOCKET, errno);
381 ERR_add_error_data(3, "port='", host, "'"); 381 ERR_asprintf_error_data("port='%s'", host);
382 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_CREATE_SOCKET); 382 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_CREATE_SOCKET);
383 goto err; 383 goto err;
384 } 384 }
@@ -422,13 +422,13 @@ again:
422 } 422 }
423#endif 423#endif
424 SYSerr(SYS_F_BIND, err_num); 424 SYSerr(SYS_F_BIND, err_num);
425 ERR_add_error_data(3, "port='", host, "'"); 425 ERR_asprintf_error_data("port='%s'", host);
426 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_BIND_SOCKET); 426 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_BIND_SOCKET);
427 goto err; 427 goto err;
428 } 428 }
429 if (listen(s, MAX_LISTEN) == -1) { 429 if (listen(s, MAX_LISTEN) == -1) {
430 SYSerr(SYS_F_BIND, errno); 430 SYSerr(SYS_F_BIND, errno);
431 ERR_add_error_data(3, "port='", host, "'"); 431 ERR_asprintf_error_data("port='%s'", host);
432 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_LISTEN_SOCKET); 432 BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET, BIO_R_UNABLE_TO_LISTEN_SOCKET);
433 goto err; 433 goto err;
434 } 434 }
diff --git a/src/lib/libssl/src/crypto/bio/bss_conn.c b/src/lib/libssl/src/crypto/bio/bss_conn.c
index b64d7d7761..d7a8619b38 100644
--- a/src/lib/libssl/src/crypto/bio/bss_conn.c
+++ b/src/lib/libssl/src/crypto/bio/bss_conn.c
@@ -156,7 +156,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
156 156
157 if (c->param_port == NULL) { 157 if (c->param_port == NULL) {
158 BIOerr(BIO_F_CONN_STATE, BIO_R_NO_PORT_SPECIFIED); 158 BIOerr(BIO_F_CONN_STATE, BIO_R_NO_PORT_SPECIFIED);
159 ERR_add_error_data(2, "host=", c->param_hostname); 159 ERR_asprintf_error_data("host=%s",
160 c->param_hostname);
160 goto exit_loop; 161 goto exit_loop;
161 } 162 }
162 c->state = BIO_CONN_S_GET_IP; 163 c->state = BIO_CONN_S_GET_IP;
@@ -193,8 +194,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
193 ret = socket(AF_INET, SOCK_STREAM, SOCKET_PROTOCOL); 194 ret = socket(AF_INET, SOCK_STREAM, SOCKET_PROTOCOL);
194 if (ret == -1) { 195 if (ret == -1) {
195 SYSerr(SYS_F_SOCKET, errno); 196 SYSerr(SYS_F_SOCKET, errno);
196 ERR_add_error_data(4, "host=", 197 ERR_asprintf_error_data("host=%s:%s",
197 c->param_hostname, ":", c->param_port); 198 c->param_hostname, c->param_port);
198 BIOerr(BIO_F_CONN_STATE, 199 BIOerr(BIO_F_CONN_STATE,
199 BIO_R_UNABLE_TO_CREATE_SOCKET); 200 BIO_R_UNABLE_TO_CREATE_SOCKET);
200 goto exit_loop; 201 goto exit_loop;
@@ -208,9 +209,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
208 if (!BIO_socket_nbio(b->num, 1)) { 209 if (!BIO_socket_nbio(b->num, 1)) {
209 BIOerr(BIO_F_CONN_STATE, 210 BIOerr(BIO_F_CONN_STATE,
210 BIO_R_ERROR_SETTING_NBIO); 211 BIO_R_ERROR_SETTING_NBIO);
211 ERR_add_error_data(4, "host=", 212 ERR_asprintf_error_data("host=%s:%s",
212 c->param_hostname, ":", 213 c->param_hostname, c->param_port);
213 c->param_port);
214 goto exit_loop; 214 goto exit_loop;
215 } 215 }
216 } 216 }
@@ -221,8 +221,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
221 i = setsockopt(b->num, SOL_SOCKET, SO_KEEPALIVE,(char *)&i, sizeof(i)); 221 i = setsockopt(b->num, SOL_SOCKET, SO_KEEPALIVE,(char *)&i, sizeof(i));
222 if (i < 0) { 222 if (i < 0) {
223 SYSerr(SYS_F_SOCKET, errno); 223 SYSerr(SYS_F_SOCKET, errno);
224 ERR_add_error_data(4, "host=", 224 ERR_asprintf_error_data("host=%s:%s",
225 c->param_hostname, ":", c->param_port); 225 c->param_hostname, c->param_port);
226 BIOerr(BIO_F_CONN_STATE, BIO_R_KEEPALIVE); 226 BIOerr(BIO_F_CONN_STATE, BIO_R_KEEPALIVE);
227 goto exit_loop; 227 goto exit_loop;
228 } 228 }
@@ -242,9 +242,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
242 b->retry_reason = BIO_RR_CONNECT; 242 b->retry_reason = BIO_RR_CONNECT;
243 } else { 243 } else {
244 SYSerr(SYS_F_CONNECT, errno); 244 SYSerr(SYS_F_CONNECT, errno);
245 ERR_add_error_data(4, "host=", 245 ERR_asprintf_error_data("host=%s:%s",
246 c->param_hostname, ":", 246 c->param_hostname, c->param_port);
247 c->param_port);
248 BIOerr(BIO_F_CONN_STATE, 247 BIOerr(BIO_F_CONN_STATE,
249 BIO_R_CONNECT_ERROR); 248 BIO_R_CONNECT_ERROR);
250 } 249 }
@@ -258,8 +257,8 @@ conn_state(BIO *b, BIO_CONNECT *c)
258 if (i) { 257 if (i) {
259 BIO_clear_retry_flags(b); 258 BIO_clear_retry_flags(b);
260 SYSerr(SYS_F_CONNECT, i); 259 SYSerr(SYS_F_CONNECT, i);
261 ERR_add_error_data(4, "host=", 260 ERR_asprintf_error_data("host=%s:%s",
262 c->param_hostname, ":", c->param_port); 261 c->param_hostname, c->param_port);
263 BIOerr(BIO_F_CONN_STATE, 262 BIOerr(BIO_F_CONN_STATE,
264 BIO_R_NBIO_CONNECT_ERROR); 263 BIO_R_NBIO_CONNECT_ERROR);
265 ret = 0; 264 ret = 0;
diff --git a/src/lib/libssl/src/crypto/bio/bss_file.c b/src/lib/libssl/src/crypto/bio/bss_file.c
index acc746260e..6d5444f666 100644
--- a/src/lib/libssl/src/crypto/bio/bss_file.c
+++ b/src/lib/libssl/src/crypto/bio/bss_file.c
@@ -122,7 +122,7 @@ BIO_new_file(const char *filename, const char *mode)
122 122
123 if (file == NULL) { 123 if (file == NULL) {
124 SYSerr(SYS_F_FOPEN, errno); 124 SYSerr(SYS_F_FOPEN, errno);
125 ERR_add_error_data(5, "fopen('", filename, "', '", mode, "')"); 125 ERR_asprintf_error_data("fopen('%s', '%s')", filename, mode);
126 if (errno == ENOENT) 126 if (errno == ENOENT)
127 BIOerr(BIO_F_BIO_NEW_FILE, BIO_R_NO_SUCH_FILE); 127 BIOerr(BIO_F_BIO_NEW_FILE, BIO_R_NO_SUCH_FILE);
128 else 128 else
@@ -262,7 +262,7 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
262 fp = fopen(ptr, p); 262 fp = fopen(ptr, p);
263 if (fp == NULL) { 263 if (fp == NULL) {
264 SYSerr(SYS_F_FOPEN, errno); 264 SYSerr(SYS_F_FOPEN, errno);
265 ERR_add_error_data(5, "fopen('", ptr, "', '", p, "')"); 265 ERR_asprintf_error_data("fopen('%s', '%s')", ptr, p);
266 BIOerr(BIO_F_FILE_CTRL, ERR_R_SYS_LIB); 266 BIOerr(BIO_F_FILE_CTRL, ERR_R_SYS_LIB);
267 ret = 0; 267 ret = 0;
268 break; 268 break;
diff --git a/src/lib/libssl/src/crypto/cms/cms_smime.c b/src/lib/libssl/src/crypto/cms/cms_smime.c
index 8c56e3a852..eed50cd6a3 100644
--- a/src/lib/libssl/src/crypto/cms/cms_smime.c
+++ b/src/lib/libssl/src/crypto/cms/cms_smime.c
@@ -302,7 +302,7 @@ static int cms_signerinfo_verify_cert(CMS_SignerInfo *si,
302 j = X509_STORE_CTX_get_error(&ctx); 302 j = X509_STORE_CTX_get_error(&ctx);
303 CMSerr(CMS_F_CMS_SIGNERINFO_VERIFY_CERT, 303 CMSerr(CMS_F_CMS_SIGNERINFO_VERIFY_CERT,
304 CMS_R_CERTIFICATE_VERIFY_ERROR); 304 CMS_R_CERTIFICATE_VERIFY_ERROR);
305 ERR_add_error_data(2, "Verify error:", 305 ERR_asprintf_error_data("Verify error:%s",
306 X509_verify_cert_error_string(j)); 306 X509_verify_cert_error_string(j));
307 goto err; 307 goto err;
308 } 308 }
diff --git a/src/lib/libssl/src/crypto/comp/c_zlib.c b/src/lib/libssl/src/crypto/comp/c_zlib.c
index aaf89429b6..3a73b3df0b 100644
--- a/src/lib/libssl/src/crypto/comp/c_zlib.c
+++ b/src/lib/libssl/src/crypto/comp/c_zlib.c
@@ -551,7 +551,7 @@ bio_zlib_read(BIO *b, char *out, int outl)
551 if ((ret != Z_OK) && (ret != Z_STREAM_END)) { 551 if ((ret != Z_OK) && (ret != Z_STREAM_END)) {
552 COMPerr(COMP_F_BIO_ZLIB_READ, 552 COMPerr(COMP_F_BIO_ZLIB_READ,
553 COMP_R_ZLIB_INFLATE_ERROR); 553 COMP_R_ZLIB_INFLATE_ERROR);
554 ERR_add_error_data(2, "zlib error:", 554 ERR_asprintf_error_data("zlib error:%s",
555 zError(ret)); 555 zError(ret));
556 return 0; 556 return 0;
557 } 557 }
@@ -638,7 +638,7 @@ bio_zlib_write(BIO *b, const char *in, int inl)
638 if (ret != Z_OK) { 638 if (ret != Z_OK) {
639 COMPerr(COMP_F_BIO_ZLIB_WRITE, 639 COMPerr(COMP_F_BIO_ZLIB_WRITE,
640 COMP_R_ZLIB_DEFLATE_ERROR); 640 COMP_R_ZLIB_DEFLATE_ERROR);
641 ERR_add_error_data(2, "zlib error:", zError(ret)); 641 ERR_asprintf_error_data("zlib error:%s", zError(ret));
642 return 0; 642 return 0;
643 } 643 }
644 ctx->ocount = ctx->obufsize - zout->avail_out; 644 ctx->ocount = ctx->obufsize - zout->avail_out;
@@ -688,7 +688,7 @@ bio_zlib_flush(BIO *b)
688 else if (ret != Z_OK) { 688 else if (ret != Z_OK) {
689 COMPerr(COMP_F_BIO_ZLIB_FLUSH, 689 COMPerr(COMP_F_BIO_ZLIB_FLUSH,
690 COMP_R_ZLIB_DEFLATE_ERROR); 690 COMP_R_ZLIB_DEFLATE_ERROR);
691 ERR_add_error_data(2, "zlib error:", zError(ret)); 691 ERR_asprintf_error_data("zlib error:%s", zError(ret));
692 return 0; 692 return 0;
693 } 693 }
694 ctx->ocount = ctx->obufsize - zout->avail_out; 694 ctx->ocount = ctx->obufsize - zout->avail_out;
diff --git a/src/lib/libssl/src/crypto/conf/conf_def.c b/src/lib/libssl/src/crypto/conf/conf_def.c
index 22fe7a8f60..bc9f139e7e 100644
--- a/src/lib/libssl/src/crypto/conf/conf_def.c
+++ b/src/lib/libssl/src/crypto/conf/conf_def.c
@@ -218,7 +218,6 @@ def_load_bio(CONF *conf, BIO *in, long *line)
218 char *s, *p, *end; 218 char *s, *p, *end;
219 int again; 219 int again;
220 long eline = 0; 220 long eline = 0;
221 char btmp[DECIMAL_SIZE(eline) + 1];
222 CONF_VALUE *v = NULL, *tv; 221 CONF_VALUE *v = NULL, *tv;
223 CONF_VALUE *sv = NULL; 222 CONF_VALUE *sv = NULL;
224 char *section = NULL, *buf; 223 char *section = NULL, *buf;
@@ -428,8 +427,7 @@ err:
428 free(section); 427 free(section);
429 if (line != NULL) 428 if (line != NULL)
430 *line = eline; 429 *line = eline;
431 snprintf(btmp, sizeof btmp, "%ld", eline); 430 ERR_asprintf_error_data("line %ld", eline);
432 ERR_add_error_data(2, "line ", btmp);
433 if ((h != conf->data) && (conf->data != NULL)) { 431 if ((h != conf->data) && (conf->data != NULL)) {
434 CONF_free(conf->data); 432 CONF_free(conf->data);
435 conf->data = NULL; 433 conf->data = NULL;
diff --git a/src/lib/libssl/src/crypto/conf/conf_lib.c b/src/lib/libssl/src/crypto/conf/conf_lib.c
index 469af6e825..35bdda3d64 100644
--- a/src/lib/libssl/src/crypto/conf/conf_lib.c
+++ b/src/lib/libssl/src/crypto/conf/conf_lib.c
@@ -329,7 +329,7 @@ NCONF_get_string(const CONF *conf, const char *group, const char *name)
329 return NULL; 329 return NULL;
330 } 330 }
331 CONFerr(CONF_F_NCONF_GET_STRING, CONF_R_NO_VALUE); 331 CONFerr(CONF_F_NCONF_GET_STRING, CONF_R_NO_VALUE);
332 ERR_add_error_data(4, "group=", group, " name=", name); 332 ERR_asprintf_error_data("group=%s name=%s", group, name);
333 return NULL; 333 return NULL;
334} 334}
335 335
diff --git a/src/lib/libssl/src/crypto/conf/conf_mod.c b/src/lib/libssl/src/crypto/conf/conf_mod.c
index 80266e43d8..b574104791 100644
--- a/src/lib/libssl/src/crypto/conf/conf_mod.c
+++ b/src/lib/libssl/src/crypto/conf/conf_mod.c
@@ -211,7 +211,7 @@ module_run(const CONF *cnf, char *name, char *value, unsigned long flags)
211 if (!md) { 211 if (!md) {
212 if (!(flags & CONF_MFLAGS_SILENT)) { 212 if (!(flags & CONF_MFLAGS_SILENT)) {
213 CONFerr(CONF_F_MODULE_RUN, CONF_R_UNKNOWN_MODULE_NAME); 213 CONFerr(CONF_F_MODULE_RUN, CONF_R_UNKNOWN_MODULE_NAME);
214 ERR_add_error_data(2, "module=", name); 214 ERR_asprintf_error_data("module=%s", name);
215 } 215 }
216 return -1; 216 return -1;
217 } 217 }
@@ -220,12 +220,11 @@ module_run(const CONF *cnf, char *name, char *value, unsigned long flags)
220 220
221 if (ret <= 0) { 221 if (ret <= 0) {
222 if (!(flags & CONF_MFLAGS_SILENT)) { 222 if (!(flags & CONF_MFLAGS_SILENT)) {
223 char rcode[DECIMAL_SIZE(ret) + 1];
224 CONFerr(CONF_F_MODULE_RUN, 223 CONFerr(CONF_F_MODULE_RUN,
225 CONF_R_MODULE_INITIALIZATION_ERROR); 224 CONF_R_MODULE_INITIALIZATION_ERROR);
226 snprintf(rcode, sizeof rcode, "%-8d", ret); 225 ERR_asprintf_error_data
227 ERR_add_error_data(6, "module=", name, ", value=", 226 ("module=%s, value=%s, retcode=%-8d",
228 value, ", retcode=", rcode); 227 name, value, ret);
229 } 228 }
230 } 229 }
231 230
@@ -272,7 +271,7 @@ err:
272 if (dso) 271 if (dso)
273 DSO_free(dso); 272 DSO_free(dso);
274 CONFerr(CONF_F_MODULE_LOAD_DSO, errcode); 273 CONFerr(CONF_F_MODULE_LOAD_DSO, errcode);
275 ERR_add_error_data(4, "module=", name, ", path=", path); 274 ERR_asprintf_error_data("module=%s, path=%s", name, path);
276 return NULL; 275 return NULL;
277} 276}
278 277
diff --git a/src/lib/libssl/src/crypto/dso/dso_dlfcn.c b/src/lib/libssl/src/crypto/dso/dso_dlfcn.c
index ea4e4935aa..6cf9ab2667 100644
--- a/src/lib/libssl/src/crypto/dso/dso_dlfcn.c
+++ b/src/lib/libssl/src/crypto/dso/dso_dlfcn.c
@@ -140,7 +140,8 @@ dlfcn_load(DSO *dso)
140 ptr = dlopen(filename, flags); 140 ptr = dlopen(filename, flags);
141 if (ptr == NULL) { 141 if (ptr == NULL) {
142 DSOerr(DSO_F_DLFCN_LOAD, DSO_R_LOAD_FAILED); 142 DSOerr(DSO_F_DLFCN_LOAD, DSO_R_LOAD_FAILED);
143 ERR_add_error_data(4, "filename(", filename, "): ", dlerror()); 143 ERR_asprintf_error_data("filename(%s): %s", filename,
144 dlerror());
144 goto err; 145 goto err;
145 } 146 }
146 if (!sk_void_push(dso->meth_data, (char *)ptr)) { 147 if (!sk_void_push(dso->meth_data, (char *)ptr)) {
@@ -204,7 +205,7 @@ dlfcn_bind_var(DSO *dso, const char *symname)
204 sym = dlsym(ptr, symname); 205 sym = dlsym(ptr, symname);
205 if (sym == NULL) { 206 if (sym == NULL) {
206 DSOerr(DSO_F_DLFCN_BIND_VAR, DSO_R_SYM_FAILURE); 207 DSOerr(DSO_F_DLFCN_BIND_VAR, DSO_R_SYM_FAILURE);
207 ERR_add_error_data(4, "symname(", symname, "): ", dlerror()); 208 ERR_asprintf_error_data("symname(%s): %s", symname, dlerror());
208 return (NULL); 209 return (NULL);
209 } 210 }
210 return (sym); 211 return (sym);
@@ -235,7 +236,7 @@ dlfcn_bind_func(DSO *dso, const char *symname)
235 u.dlret = dlsym(ptr, symname); 236 u.dlret = dlsym(ptr, symname);
236 if (u.dlret == NULL) { 237 if (u.dlret == NULL) {
237 DSOerr(DSO_F_DLFCN_BIND_FUNC, DSO_R_SYM_FAILURE); 238 DSOerr(DSO_F_DLFCN_BIND_FUNC, DSO_R_SYM_FAILURE);
238 ERR_add_error_data(4, "symname(", symname, "): ", dlerror()); 239 ERR_asprintf_error_data("symname(%s): %s", symname, dlerror());
239 return (NULL); 240 return (NULL);
240 } 241 }
241 return u.sym; 242 return u.sym;
@@ -348,7 +349,7 @@ dlfcn_pathbyaddr(void *addr, char *path, int sz)
348 return len; 349 return len;
349 } 350 }
350 351
351 ERR_add_error_data(4, "dlfcn_pathbyaddr(): ", dlerror()); 352 ERR_asprintf_error_data("dlfcn_pathbyaddr(): %s", dlerror());
352 return -1; 353 return -1;
353} 354}
354 355
diff --git a/src/lib/libssl/src/crypto/engine/eng_cnf.c b/src/lib/libssl/src/crypto/engine/eng_cnf.c
index 95c4070015..afb704e93b 100644
--- a/src/lib/libssl/src/crypto/engine/eng_cnf.c
+++ b/src/lib/libssl/src/crypto/engine/eng_cnf.c
@@ -203,9 +203,9 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf)
203 { 203 {
204 ENGINEerr(ENGINE_F_INT_ENGINE_CONFIGURE, ENGINE_R_ENGINE_CONFIGURATION_ERROR); 204 ENGINEerr(ENGINE_F_INT_ENGINE_CONFIGURE, ENGINE_R_ENGINE_CONFIGURATION_ERROR);
205 if (ecmd) 205 if (ecmd)
206 ERR_add_error_data(6, "section=", ecmd->section, 206 ERR_asprintf_error_data
207 ", name=", ecmd->name, 207 ("section=%s, name=%s, value=%s",
208 ", value=", ecmd->value); 208 ecmd->section, ecmd->name, ecmd->value);
209 } 209 }
210 if (e) 210 if (e)
211 ENGINE_free(e); 211 ENGINE_free(e);
diff --git a/src/lib/libssl/src/crypto/engine/eng_fat.c b/src/lib/libssl/src/crypto/engine/eng_fat.c
index 789b8d57e5..e01067566e 100644
--- a/src/lib/libssl/src/crypto/engine/eng_fat.c
+++ b/src/lib/libssl/src/crypto/engine/eng_fat.c
@@ -141,7 +141,7 @@ int ENGINE_set_default_string(ENGINE *e, const char *def_list)
141 { 141 {
142 ENGINEerr(ENGINE_F_ENGINE_SET_DEFAULT_STRING, 142 ENGINEerr(ENGINE_F_ENGINE_SET_DEFAULT_STRING,
143 ENGINE_R_INVALID_STRING); 143 ENGINE_R_INVALID_STRING);
144 ERR_add_error_data(2, "str=",def_list); 144 ERR_asprintf_error_data("str=%s",def_list);
145 return 0; 145 return 0;
146 } 146 }
147 return ENGINE_set_default(e, flags); 147 return ENGINE_set_default(e, flags);
diff --git a/src/lib/libssl/src/crypto/engine/eng_list.c b/src/lib/libssl/src/crypto/engine/eng_list.c
index 95c858960b..5528b5478f 100644
--- a/src/lib/libssl/src/crypto/engine/eng_list.c
+++ b/src/lib/libssl/src/crypto/engine/eng_list.c
@@ -389,7 +389,7 @@ ENGINE *ENGINE_by_id(const char *id)
389 { 389 {
390 ENGINEerr(ENGINE_F_ENGINE_BY_ID, 390 ENGINEerr(ENGINE_F_ENGINE_BY_ID,
391 ENGINE_R_NO_SUCH_ENGINE); 391 ENGINE_R_NO_SUCH_ENGINE);
392 ERR_add_error_data(2, "id=", id); 392 ERR_asprintf_error_data("id=%s", id);
393 } 393 }
394 return iterator; 394 return iterator;
395#else 395#else
@@ -416,7 +416,7 @@ ENGINE *ENGINE_by_id(const char *id)
416notfound: 416notfound:
417 ENGINE_free(iterator); 417 ENGINE_free(iterator);
418 ENGINEerr(ENGINE_F_ENGINE_BY_ID,ENGINE_R_NO_SUCH_ENGINE); 418 ENGINEerr(ENGINE_F_ENGINE_BY_ID,ENGINE_R_NO_SUCH_ENGINE);
419 ERR_add_error_data(2, "id=", id); 419 ERR_asprintf_error_data("id=%s", id);
420 return NULL; 420 return NULL;
421 /* EEK! Experimental code ends */ 421 /* EEK! Experimental code ends */
422#endif 422#endif
diff --git a/src/lib/libssl/src/crypto/evp/evp_pbe.c b/src/lib/libssl/src/crypto/evp/evp_pbe.c
index 37a926c3fc..37683af76a 100644
--- a/src/lib/libssl/src/crypto/evp/evp_pbe.c
+++ b/src/lib/libssl/src/crypto/evp/evp_pbe.c
@@ -167,7 +167,7 @@ int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
167 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM); 167 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM);
168 if (!pbe_obj) strlcpy (obj_tmp, "NULL", sizeof obj_tmp); 168 if (!pbe_obj) strlcpy (obj_tmp, "NULL", sizeof obj_tmp);
169 else i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj); 169 else i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj);
170 ERR_add_error_data(2, "TYPE=", obj_tmp); 170 ERR_asprintf_error_data("TYPE=%s", obj_tmp);
171 return 0; 171 return 0;
172 } 172 }
173 173
diff --git a/src/lib/libssl/src/crypto/evp/evp_pkey.c b/src/lib/libssl/src/crypto/evp/evp_pkey.c
index c760cf1965..94056f0da9 100644
--- a/src/lib/libssl/src/crypto/evp/evp_pkey.c
+++ b/src/lib/libssl/src/crypto/evp/evp_pkey.c
@@ -83,7 +83,7 @@ EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8)
83 { 83 {
84 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM); 84 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);
85 i2t_ASN1_OBJECT(obj_tmp, 80, algoid); 85 i2t_ASN1_OBJECT(obj_tmp, 80, algoid);
86 ERR_add_error_data(2, "TYPE=", obj_tmp); 86 ERR_asprintf_error_data("TYPE=%s", obj_tmp);
87 goto error; 87 goto error;
88 } 88 }
89 89
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c b/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c
index 4bb6fce83c..b45eaf6767 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c
@@ -259,9 +259,9 @@ static int parse_http_line1(char *line)
259 { 259 {
260 OCSPerr(OCSP_F_PARSE_HTTP_LINE1, OCSP_R_SERVER_RESPONSE_ERROR); 260 OCSPerr(OCSP_F_PARSE_HTTP_LINE1, OCSP_R_SERVER_RESPONSE_ERROR);
261 if(!*q) 261 if(!*q)
262 ERR_add_error_data(2, "Code=", p); 262 ERR_asprintf_error_data("Code=%s", p);
263 else 263 else
264 ERR_add_error_data(4, "Code=", p, ",Reason=", q); 264 ERR_asprintf_error_data("Code=%s,Reason=%s", p, q);
265 return 0; 265 return 0;
266 } 266 }
267 267
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c b/src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c
index 276718304d..0b181d5abe 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c
@@ -122,9 +122,9 @@ int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
122 X509_STORE_CTX_cleanup(&ctx); 122 X509_STORE_CTX_cleanup(&ctx);
123 if (ret <= 0) 123 if (ret <= 0)
124 { 124 {
125 i = X509_STORE_CTX_get_error(&ctx); 125 i = X509_STORE_CTX_get_error(&ctx);
126 OCSPerr(OCSP_F_OCSP_BASIC_VERIFY,OCSP_R_CERTIFICATE_VERIFY_ERROR); 126 OCSPerr(OCSP_F_OCSP_BASIC_VERIFY,OCSP_R_CERTIFICATE_VERIFY_ERROR);
127 ERR_add_error_data(2, "Verify error:", 127 ERR_asprintf_error_data("Verify error:%s",
128 X509_verify_cert_error_string(i)); 128 X509_verify_cert_error_string(i));
129 goto end; 129 goto end;
130 } 130 }
@@ -421,7 +421,7 @@ int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, X509_STORE *st
421 { 421 {
422 ret = X509_STORE_CTX_get_error(&ctx); 422 ret = X509_STORE_CTX_get_error(&ctx);
423 OCSPerr(OCSP_F_OCSP_REQUEST_VERIFY,OCSP_R_CERTIFICATE_VERIFY_ERROR); 423 OCSPerr(OCSP_F_OCSP_REQUEST_VERIFY,OCSP_R_CERTIFICATE_VERIFY_ERROR);
424 ERR_add_error_data(2, "Verify error:", 424 ERR_asprintf_error_data("Verify error:%s",
425 X509_verify_cert_error_string(ret)); 425 X509_verify_cert_error_string(ret));
426 return 0; 426 return 0;
427 } 427 }
diff --git a/src/lib/libssl/src/crypto/pem/pem_lib.c b/src/lib/libssl/src/crypto/pem/pem_lib.c
index c670ac2acb..9bc2b27285 100644
--- a/src/lib/libssl/src/crypto/pem/pem_lib.c
+++ b/src/lib/libssl/src/crypto/pem/pem_lib.c
@@ -289,7 +289,7 @@ PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm,
289 if (!PEM_read_bio(bp, &nm, &header, &data, &len)) { 289 if (!PEM_read_bio(bp, &nm, &header, &data, &len)) {
290 if (ERR_GET_REASON(ERR_peek_error()) == 290 if (ERR_GET_REASON(ERR_peek_error()) ==
291 PEM_R_NO_START_LINE) 291 PEM_R_NO_START_LINE)
292 ERR_add_error_data(2, "Expecting: ", name); 292 ERR_asprintf_error_data("Expecting: %s", name);
293 return 0; 293 return 0;
294 } 294 }
295 if (check_pem(nm, name)) 295 if (check_pem(nm, name))
diff --git a/src/lib/libssl/src/crypto/pkcs7/bio_ber.c b/src/lib/libssl/src/crypto/pkcs7/bio_ber.c
index 04dc5c9b96..d787495a21 100644
--- a/src/lib/libssl/src/crypto/pkcs7/bio_ber.c
+++ b/src/lib/libssl/src/crypto/pkcs7/bio_ber.c
@@ -155,7 +155,6 @@ static int ber_free(BIO *a)
155 155
156int bio_ber_get_header(BIO *bio, BIO_BER_CTX *ctx) 156int bio_ber_get_header(BIO *bio, BIO_BER_CTX *ctx)
157 { 157 {
158 char buf[64];
159 int i,j,n; 158 int i,j,n;
160 int ret; 159 int ret;
161 unsigned char *p; 160 unsigned char *p;
@@ -215,8 +214,7 @@ int bio_ber_get_header(BIO *bio, BIO_BER_CTX *ctx)
215 if ((ctx->tag >= 0) && (ctx->tag != tag)) 214 if ((ctx->tag >= 0) && (ctx->tag != tag))
216 { 215 {
217 BIOerr(BIO_F_BIO_BER_GET_HEADER,BIO_R_TAG_MISMATCH); 216 BIOerr(BIO_F_BIO_BER_GET_HEADER,BIO_R_TAG_MISMATCH);
218 sprintf(buf,"tag=%d, got %d",ctx->tag,tag); 217 ERR_asprintf_error_data("tag=%d, got %d", ctx->tag, tag);
219 ERR_add_error_data(1,buf);
220 return(-1); 218 return(-1);
221 } 219 }
222 if (ret & 0x01) 220 if (ret & 0x01)
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c b/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c
index a5104f8d05..6d6bd46b62 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c
@@ -340,7 +340,7 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
340 X509_STORE_CTX_cleanup(&cert_ctx); 340 X509_STORE_CTX_cleanup(&cert_ctx);
341 if (i <= 0) { 341 if (i <= 0) {
342 PKCS7err(PKCS7_F_PKCS7_VERIFY,PKCS7_R_CERTIFICATE_VERIFY_ERROR); 342 PKCS7err(PKCS7_F_PKCS7_VERIFY,PKCS7_R_CERTIFICATE_VERIFY_ERROR);
343 ERR_add_error_data(2, "Verify error:", 343 ERR_asprintf_error_data("Verify error:%s",
344 X509_verify_cert_error_string(j)); 344 X509_verify_cert_error_string(j));
345 sk_X509_free(signers); 345 sk_X509_free(signers);
346 return 0; 346 return 0;
diff --git a/src/lib/libssl/src/crypto/ts/ts_conf.c b/src/lib/libssl/src/crypto/ts/ts_conf.c
index f8cf3b514c..12cce16bc8 100644
--- a/src/lib/libssl/src/crypto/ts/ts_conf.c
+++ b/src/lib/libssl/src/crypto/ts/ts_conf.c
@@ -239,7 +239,7 @@ err:
239 if (!ret) { 239 if (!ret) {
240 TSerr(TS_F_TS_CONF_SET_DEFAULT_ENGINE, 240 TSerr(TS_F_TS_CONF_SET_DEFAULT_ENGINE,
241 TS_R_COULD_NOT_SET_ENGINE); 241 TS_R_COULD_NOT_SET_ENGINE);
242 ERR_add_error_data(2, "engine:", name); 242 ERR_asprintf_error_data("engine:%s", name);
243 } 243 }
244 if (e) 244 if (e)
245 ENGINE_free(e); 245 ENGINE_free(e);
diff --git a/src/lib/libssl/src/crypto/ts/ts_rsp_verify.c b/src/lib/libssl/src/crypto/ts/ts_rsp_verify.c
index 66e35dab3a..2a4c0c5ef9 100644
--- a/src/lib/libssl/src/crypto/ts/ts_rsp_verify.c
+++ b/src/lib/libssl/src/crypto/ts/ts_rsp_verify.c
@@ -244,7 +244,7 @@ TS_verify_cert(X509_STORE *store, STACK_OF(X509) *untrusted, X509 *signer,
244 if (i <= 0) { 244 if (i <= 0) {
245 int j = X509_STORE_CTX_get_error(&cert_ctx); 245 int j = X509_STORE_CTX_get_error(&cert_ctx);
246 TSerr(TS_F_TS_VERIFY_CERT, TS_R_CERTIFICATE_VERIFY_ERROR); 246 TSerr(TS_F_TS_VERIFY_CERT, TS_R_CERTIFICATE_VERIFY_ERROR);
247 ERR_add_error_data(2, "Verify error:", 247 ERR_asprintf_error_data("Verify error:%s",
248 X509_verify_cert_error_string(j)); 248 X509_verify_cert_error_string(j));
249 ret = 0; 249 ret = 0;
250 } else { 250 } else {
@@ -530,11 +530,11 @@ TS_check_status_info(TS_RESP *response)
530 530
531 /* Making up the error string. */ 531 /* Making up the error string. */
532 TSerr(TS_F_TS_CHECK_STATUS_INFO, TS_R_NO_TIME_STAMP_TOKEN); 532 TSerr(TS_F_TS_CHECK_STATUS_INFO, TS_R_NO_TIME_STAMP_TOKEN);
533 ERR_add_error_data(6, 533 ERR_asprintf_error_data
534 "status code: ", status_text, 534 ("status code: %s, status text: %s, failure codes: %s",
535 ", status text: ", embedded_status_text ? 535 status_text,
536 embedded_status_text : "unspecified", 536 embedded_status_text ? embedded_status_text : "unspecified",
537 ", failure codes: ", failure_text); 537 failure_text);
538 free(embedded_status_text); 538 free(embedded_status_text);
539 539
540 return 0; 540 return 0;
diff --git a/src/lib/libssl/src/crypto/ui/ui_lib.c b/src/lib/libssl/src/crypto/ui/ui_lib.c
index ee76e5e64d..5335b59c48 100644
--- a/src/lib/libssl/src/crypto/ui/ui_lib.c
+++ b/src/lib/libssl/src/crypto/ui/ui_lib.c
@@ -827,31 +827,26 @@ UI_set_result(UI *ui, UI_STRING *uis, const char *result)
827 switch (uis->type) { 827 switch (uis->type) {
828 case UIT_PROMPT: 828 case UIT_PROMPT:
829 case UIT_VERIFY: 829 case UIT_VERIFY:
830 { 830 if (l < uis->_.string_data.result_minsize) {
831 char number1[DECIMAL_SIZE(uis->_.string_data.result_minsize) + 1]; 831 ui->flags |= UI_FLAG_REDOABLE;
832 char number2[DECIMAL_SIZE(uis->_.string_data.result_maxsize) + 1]; 832 UIerr(UI_F_UI_SET_RESULT,
833 833 UI_R_RESULT_TOO_SMALL);
834 (void) snprintf(number1, sizeof(number1), "%d", 834 ERR_asprintf_error_data
835 uis->_.string_data.result_minsize); 835 ("You must type in %d to %d characters",
836 (void) snprintf(number2, sizeof(number2), "%d", 836 uis->_.string_data.result_minsize,
837 uis->_.string_data.result_maxsize); 837 uis->_.string_data.result_maxsize);
838 838 return -1;
839 if (l < uis->_.string_data.result_minsize) { 839 }
840 ui->flags |= UI_FLAG_REDOABLE; 840 if (l > uis->_.string_data.result_maxsize) {
841 UIerr(UI_F_UI_SET_RESULT, UI_R_RESULT_TOO_SMALL); 841 ui->flags |= UI_FLAG_REDOABLE;
842 ERR_add_error_data(5, "You must type in ", 842 UIerr(UI_F_UI_SET_RESULT,
843 number1, " to ", number2, " characters"); 843 UI_R_RESULT_TOO_LARGE);
844 return -1; 844 ERR_asprintf_error_data
845 } 845 ("You must type in %d to %d characters",
846 if (l > uis->_.string_data.result_maxsize) { 846 uis->_.string_data.result_minsize,
847 ui->flags |= UI_FLAG_REDOABLE; 847 uis->_.string_data.result_maxsize);
848 UIerr(UI_F_UI_SET_RESULT, UI_R_RESULT_TOO_LARGE); 848 return -1;
849 ERR_add_error_data(5, "You must type in ",
850 number1, " to ", number2, " characters");
851 return -1;
852 }
853 } 849 }
854
855 if (!uis->result_buf) { 850 if (!uis->result_buf) {
856 UIerr(UI_F_UI_SET_RESULT, UI_R_NO_RESULT_BUFFER); 851 UIerr(UI_F_UI_SET_RESULT, UI_R_NO_RESULT_BUFFER);
857 return -1; 852 return -1;
diff --git a/src/lib/libssl/src/crypto/x509/x509_att.c b/src/lib/libssl/src/crypto/x509/x509_att.c
index 5699568998..ef922c7c83 100644
--- a/src/lib/libssl/src/crypto/x509/x509_att.c
+++ b/src/lib/libssl/src/crypto/x509/x509_att.c
@@ -282,7 +282,7 @@ X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, const char *atrname,
282 if (obj == NULL) { 282 if (obj == NULL) {
283 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_TXT, 283 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_TXT,
284 X509_R_INVALID_FIELD_NAME); 284 X509_R_INVALID_FIELD_NAME);
285 ERR_add_error_data(2, "name=", atrname); 285 ERR_asprintf_error_data("name=%s", atrname);
286 return (NULL); 286 return (NULL);
287 } 287 }
288 nattr = X509_ATTRIBUTE_create_by_OBJ(attr, obj, type, bytes, len); 288 nattr = X509_ATTRIBUTE_create_by_OBJ(attr, obj, type, bytes, len);
diff --git a/src/lib/libssl/src/crypto/x509/x509name.c b/src/lib/libssl/src/crypto/x509/x509name.c
index 3d90fd67fe..32fce2debb 100644
--- a/src/lib/libssl/src/crypto/x509/x509name.c
+++ b/src/lib/libssl/src/crypto/x509/x509name.c
@@ -298,7 +298,7 @@ X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
298 if (obj == NULL) { 298 if (obj == NULL) {
299 X509err(X509_F_X509_NAME_ENTRY_CREATE_BY_TXT, 299 X509err(X509_F_X509_NAME_ENTRY_CREATE_BY_TXT,
300 X509_R_INVALID_FIELD_NAME); 300 X509_R_INVALID_FIELD_NAME);
301 ERR_add_error_data(2, "name=", field); 301 ERR_asprintf_error_data("name=%s", field);
302 return (NULL); 302 return (NULL);
303 } 303 }
304 nentry = X509_NAME_ENTRY_create_by_OBJ(ne, obj, type, bytes, len); 304 nentry = X509_NAME_ENTRY_create_by_OBJ(ne, obj, type, bytes, len);
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_akey.c b/src/lib/libssl/src/crypto/x509v3/v3_akey.c
index 6d5c576e23..a5d760d469 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_akey.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_akey.c
@@ -139,7 +139,7 @@ v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
139 } else { 139 } else {
140 X509V3err(X509V3_F_V2I_AUTHORITY_KEYID, 140 X509V3err(X509V3_F_V2I_AUTHORITY_KEYID,
141 X509V3_R_UNKNOWN_OPTION); 141 X509V3_R_UNKNOWN_OPTION);
142 ERR_add_error_data(2, "name=", cnf->name); 142 ERR_asprintf_error_data("name=%s", cnf->name);
143 return NULL; 143 return NULL;
144 } 144 }
145 } 145 }
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_alt.c b/src/lib/libssl/src/crypto/x509v3/v3_alt.c
index e61ed673c0..61b0c90fad 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_alt.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_alt.c
@@ -479,7 +479,7 @@ a2i_GENERAL_NAME(GENERAL_NAME *out, const X509V3_EXT_METHOD *method,
479 if (!(obj = OBJ_txt2obj(value, 0))) { 479 if (!(obj = OBJ_txt2obj(value, 0))) {
480 X509V3err(X509V3_F_A2I_GENERAL_NAME, 480 X509V3err(X509V3_F_A2I_GENERAL_NAME,
481 X509V3_R_BAD_OBJECT); 481 X509V3_R_BAD_OBJECT);
482 ERR_add_error_data(2, "value=", value); 482 ERR_asprintf_error_data("value=%s", value);
483 goto err; 483 goto err;
484 } 484 }
485 gen->d.rid = obj; 485 gen->d.rid = obj;
@@ -494,7 +494,7 @@ a2i_GENERAL_NAME(GENERAL_NAME *out, const X509V3_EXT_METHOD *method,
494 if (gen->d.ip == NULL) { 494 if (gen->d.ip == NULL) {
495 X509V3err(X509V3_F_A2I_GENERAL_NAME, 495 X509V3err(X509V3_F_A2I_GENERAL_NAME,
496 X509V3_R_BAD_IP_ADDRESS); 496 X509V3_R_BAD_IP_ADDRESS);
497 ERR_add_error_data(2, "value=", value); 497 ERR_asprintf_error_data("value=%s", value);
498 goto err; 498 goto err;
499 } 499 }
500 break; 500 break;
@@ -572,7 +572,7 @@ v2i_GENERAL_NAME_ex(GENERAL_NAME *out, const X509V3_EXT_METHOD *method,
572 else { 572 else {
573 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX, 573 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,
574 X509V3_R_UNSUPPORTED_OPTION); 574 X509V3_R_UNSUPPORTED_OPTION);
575 ERR_add_error_data(2, "name=", name); 575 ERR_asprintf_error_data("name=%s", name);
576 return NULL; 576 return NULL;
577 } 577 }
578 578
@@ -620,7 +620,7 @@ do_dirname(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx)
620 sk = X509V3_get_section(ctx, value); 620 sk = X509V3_get_section(ctx, value);
621 if (!sk) { 621 if (!sk) {
622 X509V3err(X509V3_F_DO_DIRNAME, X509V3_R_SECTION_NOT_FOUND); 622 X509V3err(X509V3_F_DO_DIRNAME, X509V3_R_SECTION_NOT_FOUND);
623 ERR_add_error_data(2, "section=", value); 623 ERR_asprintf_error_data("section=%s", value);
624 X509_NAME_free(nm); 624 X509_NAME_free(nm);
625 return 0; 625 return 0;
626 } 626 }
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_conf.c b/src/lib/libssl/src/crypto/x509v3/v3_conf.c
index daacf8d5df..e22aa50fcd 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_conf.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_conf.c
@@ -94,7 +94,7 @@ X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, char *value)
94 if (!ret) { 94 if (!ret) {
95 X509V3err(X509V3_F_X509V3_EXT_NCONF, 95 X509V3err(X509V3_F_X509V3_EXT_NCONF,
96 X509V3_R_ERROR_IN_EXTENSION); 96 X509V3_R_ERROR_IN_EXTENSION);
97 ERR_add_error_data(4, "name=", name, ", value=", value); 97 ERR_asprintf_error_data("name=%s, value=%s", name, value);
98 } 98 }
99 return ret; 99 return ret;
100} 100}
@@ -142,8 +142,8 @@ do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid, int crit, char *value)
142 if (sk_CONF_VALUE_num(nval) <= 0) { 142 if (sk_CONF_VALUE_num(nval) <= 0) {
143 X509V3err(X509V3_F_DO_EXT_NCONF, 143 X509V3err(X509V3_F_DO_EXT_NCONF,
144 X509V3_R_INVALID_EXTENSION_STRING); 144 X509V3_R_INVALID_EXTENSION_STRING);
145 ERR_add_error_data(4, "name=", OBJ_nid2sn(ext_nid), 145 ERR_asprintf_error_data("name=%s,section=%s",
146 ",section=", value); 146 OBJ_nid2sn(ext_nid), value);
147 return NULL; 147 return NULL;
148 } 148 }
149 ext_struc = method->v2i(method, ctx, nval); 149 ext_struc = method->v2i(method, ctx, nval);
@@ -165,7 +165,7 @@ do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid, int crit, char *value)
165 } else { 165 } else {
166 X509V3err(X509V3_F_DO_EXT_NCONF, 166 X509V3err(X509V3_F_DO_EXT_NCONF,
167 X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED); 167 X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED);
168 ERR_add_error_data(2, "name=", OBJ_nid2sn(ext_nid)); 168 ERR_asprintf_error_data("name=%s", OBJ_nid2sn(ext_nid));
169 return NULL; 169 return NULL;
170 } 170 }
171 171
@@ -283,7 +283,7 @@ v3_generic_extension(const char *ext, char *value, int crit, int gen_type,
283 if (!(obj = OBJ_txt2obj(ext, 0))) { 283 if (!(obj = OBJ_txt2obj(ext, 0))) {
284 X509V3err(X509V3_F_V3_GENERIC_EXTENSION, 284 X509V3err(X509V3_F_V3_GENERIC_EXTENSION,
285 X509V3_R_EXTENSION_NAME_ERROR); 285 X509V3_R_EXTENSION_NAME_ERROR);
286 ERR_add_error_data(2, "name=", ext); 286 ERR_asprintf_error_data("name=%s", ext);
287 goto err; 287 goto err;
288 } 288 }
289 289
@@ -295,7 +295,7 @@ v3_generic_extension(const char *ext, char *value, int crit, int gen_type,
295 if (ext_der == NULL) { 295 if (ext_der == NULL) {
296 X509V3err(X509V3_F_V3_GENERIC_EXTENSION, 296 X509V3err(X509V3_F_V3_GENERIC_EXTENSION,
297 X509V3_R_EXTENSION_VALUE_ERROR); 297 X509V3_R_EXTENSION_VALUE_ERROR);
298 ERR_add_error_data(2, "value=", value); 298 ERR_asprintf_error_data("value=%s", value);
299 goto err; 299 goto err;
300 } 300 }
301 301
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_info.c b/src/lib/libssl/src/crypto/x509v3/v3_info.c
index 7853e3e23b..9ae1596b1f 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_info.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_info.c
@@ -184,12 +184,10 @@ v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
184 if (!acc->method) { 184 if (!acc->method) {
185 X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, 185 X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,
186 X509V3_R_BAD_OBJECT); 186 X509V3_R_BAD_OBJECT);
187 ERR_add_error_data(2, "value=", objtmp); 187 ERR_asprintf_error_data("value=%s", objtmp);
188 free(objtmp);
189 goto err; 188 goto err;
190 } 189 }
191 free(objtmp); 190 free(objtmp);
192
193 } 191 }
194 return ainfo; 192 return ainfo;
195 193
diff --git a/src/lib/libssl/src/crypto/x509v3/x509v3.h b/src/lib/libssl/src/crypto/x509v3/x509v3.h
index b308abe7cd..dda5344b33 100644
--- a/src/lib/libssl/src/crypto/x509v3/x509v3.h
+++ b/src/lib/libssl/src/crypto/x509v3/x509v3.h
@@ -379,8 +379,9 @@ struct ISSUING_DIST_POINT_st
379/* onlysomereasons present */ 379/* onlysomereasons present */
380#define IDP_REASONS 0x40 380#define IDP_REASONS 0x40
381 381
382#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \ 382#define X509V3_conf_err(val) ERR_asprintf_error_data( \
383",name:", val->name, ",value:", val->value); 383 "section:%s,name:%s,value:%s", val->section, \
384 val->name, val->value);
384 385
385#define X509V3_set_ctx_test(ctx) \ 386#define X509V3_set_ctx_test(ctx) \
386 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) 387 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
diff --git a/src/lib/libssl/src/ssl/d1_pkt.c b/src/lib/libssl/src/ssl/d1_pkt.c
index 7cfada4e6b..c5bdb41b90 100644
--- a/src/lib/libssl/src/ssl/d1_pkt.c
+++ b/src/lib/libssl/src/ssl/d1_pkt.c
@@ -1109,13 +1109,11 @@ start:
1109#endif 1109#endif
1110 } else if (alert_level == 2) /* fatal */ 1110 } else if (alert_level == 2) /* fatal */
1111 { 1111 {
1112 char tmp[16];
1113
1114 s->rwstate = SSL_NOTHING; 1112 s->rwstate = SSL_NOTHING;
1115 s->s3->fatal_alert = alert_descr; 1113 s->s3->fatal_alert = alert_descr;
1116 SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr); 1114 SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr);
1117 (void) snprintf(tmp,sizeof tmp,"%d",alert_descr); 1115 ERR_asprintf_error_data("SSL alert number %d",
1118 ERR_add_error_data(2, "SSL alert number ", tmp); 1116 alert_descr);
1119 s->shutdown|=SSL_RECEIVED_SHUTDOWN; 1117 s->shutdown|=SSL_RECEIVED_SHUTDOWN;
1120 SSL_CTX_remove_session(s->ctx, s->session); 1118 SSL_CTX_remove_session(s->ctx, s->session);
1121 return (0); 1119 return (0);
diff --git a/src/lib/libssl/src/ssl/s3_pkt.c b/src/lib/libssl/src/ssl/s3_pkt.c
index 68c3f1cb2b..4a8462ecb9 100644
--- a/src/lib/libssl/src/ssl/s3_pkt.c
+++ b/src/lib/libssl/src/ssl/s3_pkt.c
@@ -1169,13 +1169,11 @@ start:
1169#endif 1169#endif
1170 } else if (alert_level == 2) { 1170 } else if (alert_level == 2) {
1171 /* fatal */ 1171 /* fatal */
1172 char tmp[16];
1173
1174 s->rwstate = SSL_NOTHING; 1172 s->rwstate = SSL_NOTHING;
1175 s->s3->fatal_alert = alert_descr; 1173 s->s3->fatal_alert = alert_descr;
1176 SSLerr(SSL_F_SSL3_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr); 1174 SSLerr(SSL_F_SSL3_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr);
1177 (void) snprintf(tmp, sizeof tmp, "%d", alert_descr); 1175 ERR_asprintf_error_data("SSL alert number %d",
1178 ERR_add_error_data(2, "SSL alert number ", tmp); 1176 alert_descr);
1179 s->shutdown|=SSL_RECEIVED_SHUTDOWN; 1177 s->shutdown|=SSL_RECEIVED_SHUTDOWN;
1180 SSL_CTX_remove_session(s->ctx, s->session); 1178 SSL_CTX_remove_session(s->ctx, s->session);
1181 return (0); 1179 return (0);
diff --git a/src/lib/libssl/src/ssl/ssl_cert.c b/src/lib/libssl/src/ssl/ssl_cert.c
index b493585c58..1b9944cf92 100644
--- a/src/lib/libssl/src/ssl/ssl_cert.c
+++ b/src/lib/libssl/src/ssl/ssl_cert.c
@@ -783,7 +783,7 @@ SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
783 } 783 }
784 if (!ret) { 784 if (!ret) {
785 SYSerr(SYS_F_OPENDIR, errno); 785 SYSerr(SYS_F_OPENDIR, errno);
786 ERR_add_error_data(3, "opendir ('", dir, "')"); 786 ERR_asprintf_error_data("opendir ('%s')", dir);
787 SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK, 787 SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK,
788 ERR_R_SYS_LIB); 788 ERR_R_SYS_LIB);
789 } 789 }
diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c
index b493585c58..1b9944cf92 100644
--- a/src/lib/libssl/ssl_cert.c
+++ b/src/lib/libssl/ssl_cert.c
@@ -783,7 +783,7 @@ SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
783 } 783 }
784 if (!ret) { 784 if (!ret) {
785 SYSerr(SYS_F_OPENDIR, errno); 785 SYSerr(SYS_F_OPENDIR, errno);
786 ERR_add_error_data(3, "opendir ('", dir, "')"); 786 ERR_asprintf_error_data("opendir ('%s')", dir);
787 SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK, 787 SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK,
788 ERR_R_SYS_LIB); 788 ERR_R_SYS_LIB);
789 } 789 }