diff options
author | beck <> | 2014-04-26 18:56:38 +0000 |
---|---|---|
committer | beck <> | 2014-04-26 18:56:38 +0000 |
commit | 47bb6e76785f0b1c4d19d8d0a02f3eb3813f96e2 (patch) | |
tree | dff54039de6c4454b05953e2ce78edfc5693e6b5 /src/lib/libcrypto/asn1 | |
parent | 8f710803a9e330d7e3f2e62116ae5b3fc02bd6cf (diff) | |
download | openbsd-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.c | 7 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/asn1_gen.c | 9 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/asn1_lib.c | 5 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/asn_mime.c | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/tasn_dec.c | 6 |
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) | |||
370 | static int | 370 | static int |
371 | parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass) | 371 | parse_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 | ||
779 | bad_str: | 776 | bad_str: |
780 | ERR_add_error_data(2, "string=", str); | 777 | ERR_asprintf_error_data("string=%s", str); |
781 | bad_form: | 778 | bad_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) | |||
459 | void | 459 | void |
460 | asn1_add_error(const unsigned char *address, int offset) | 460 | asn1_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 | ||
468 | int | 465 | int |
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: | |||
496 | err: | 496 | err: |
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 | ||