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 | ||
