summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1
diff options
context:
space:
mode:
authorbeck <>2014-04-26 18:56:38 +0000
committerbeck <>2014-04-26 18:56:38 +0000
commit47bb6e76785f0b1c4d19d8d0a02f3eb3813f96e2 (patch)
treedff54039de6c4454b05953e2ce78edfc5693e6b5 /src/lib/libcrypto/asn1
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@
Diffstat (limited to 'src/lib/libcrypto/asn1')
-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
5 files changed, 12 insertions, 21 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