summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbeck <>2014-04-14 18:53:14 +0000
committerbeck <>2014-04-14 18:53:14 +0000
commit715a2c58fe812af3f07885ee27a3fc208e84c5ce (patch)
tree832550e82afe0db5c3fc97737827638ec3ed0b7f /src
parent95635d69892027aae43126c720bdf465c55b75b4 (diff)
downloadopenbsd-715a2c58fe812af3f07885ee27a3fc208e84c5ce.tar.gz
openbsd-715a2c58fe812af3f07885ee27a3fc208e84c5ce.tar.bz2
openbsd-715a2c58fe812af3f07885ee27a3fc208e84c5ce.zip
Flense all use of BIO_snprintf from ssl source - use the real one instead,
and allow for the normal posix mandated return values instead of the nonstandard one from BIO_snprintf. ok miod@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/d1_pkt.c2
-rw-r--r--src/lib/libssl/src/ssl/d1_pkt.c2
-rw-r--r--src/lib/libssl/src/ssl/kssl.c36
-rw-r--r--src/lib/libssl/src/ssl/kssl.h4
-rw-r--r--src/lib/libssl/src/ssl/ssl_ciph.c11
-rw-r--r--src/lib/libssl/src/ssl/ssltest.c8
-rw-r--r--src/lib/libssl/ssl_ciph.c11
7 files changed, 40 insertions, 34 deletions
diff --git a/src/lib/libssl/d1_pkt.c b/src/lib/libssl/d1_pkt.c
index 830dc2d2d0..cb5f2c3199 100644
--- a/src/lib/libssl/d1_pkt.c
+++ b/src/lib/libssl/d1_pkt.c
@@ -1117,7 +1117,7 @@ start:
1117 s->rwstate = SSL_NOTHING; 1117 s->rwstate = SSL_NOTHING;
1118 s->s3->fatal_alert = alert_descr; 1118 s->s3->fatal_alert = alert_descr;
1119 SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr); 1119 SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr);
1120 BIO_snprintf(tmp, sizeof tmp, "%d", alert_descr); 1120 (void) snprintf(tmp,sizeof tmp,"%d",alert_descr);
1121 ERR_add_error_data(2, "SSL alert number ", tmp); 1121 ERR_add_error_data(2, "SSL alert number ", tmp);
1122 s->shutdown|=SSL_RECEIVED_SHUTDOWN; 1122 s->shutdown|=SSL_RECEIVED_SHUTDOWN;
1123 SSL_CTX_remove_session(s->ctx, s->session); 1123 SSL_CTX_remove_session(s->ctx, s->session);
diff --git a/src/lib/libssl/src/ssl/d1_pkt.c b/src/lib/libssl/src/ssl/d1_pkt.c
index 830dc2d2d0..cb5f2c3199 100644
--- a/src/lib/libssl/src/ssl/d1_pkt.c
+++ b/src/lib/libssl/src/ssl/d1_pkt.c
@@ -1117,7 +1117,7 @@ start:
1117 s->rwstate = SSL_NOTHING; 1117 s->rwstate = SSL_NOTHING;
1118 s->s3->fatal_alert = alert_descr; 1118 s->s3->fatal_alert = alert_descr;
1119 SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr); 1119 SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr);
1120 BIO_snprintf(tmp, sizeof tmp, "%d", alert_descr); 1120 (void) snprintf(tmp,sizeof tmp,"%d",alert_descr);
1121 ERR_add_error_data(2, "SSL alert number ", tmp); 1121 ERR_add_error_data(2, "SSL alert number ", tmp);
1122 s->shutdown|=SSL_RECEIVED_SHUTDOWN; 1122 s->shutdown|=SSL_RECEIVED_SHUTDOWN;
1123 SSL_CTX_remove_session(s->ctx, s->session); 1123 SSL_CTX_remove_session(s->ctx, s->session);
diff --git a/src/lib/libssl/src/ssl/kssl.c b/src/lib/libssl/src/ssl/kssl.c
index 2bbe3ab647..83afa97f03 100644
--- a/src/lib/libssl/src/ssl/kssl.c
+++ b/src/lib/libssl/src/ssl/kssl.c
@@ -273,7 +273,7 @@ unsigned char
273 273
274 274
275/* Set kssl_err error info when reason text is a simple string 275/* Set kssl_err error info when reason text is a simple string
276** kssl_err = struct { int reason; char text[KSSL_ERR_MAX+1]; } 276** kssl_err = struct { int reason; char text[KSSL_ERR_MAX]; }
277*/ 277*/
278void 278void
279kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text) 279kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text)
@@ -282,7 +282,7 @@ kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text)
282 return; 282 return;
283 283
284 kssl_err->reason = reason; 284 kssl_err->reason = reason;
285 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, "%s", text); 285 (void) snprintf(kssl_err->text, KSSL_ERR_MAX, "%s", text);
286 return; 286 return;
287} 287}
288 288
@@ -420,20 +420,20 @@ kssl_cget_tkt(
420 } 420 }
421 421
422 if ((krb5rc = krb5_init_context(&krb5context)) != 0) { 422 if ((krb5rc = krb5_init_context(&krb5context)) != 0) {
423 BIO_snprintf(kssl_err->text,KSSL_ERR_MAX, 423 (void) snprintf(kssl_err->text,KSSL_ERR_MAX,
424 "krb5_init_context() fails: %d\n", krb5rc); 424 "krb5_init_context() fails: %d\n", krb5rc);
425 kssl_err->reason = SSL_R_KRB5_C_INIT; 425 kssl_err->reason = SSL_R_KRB5_C_INIT;
426 goto err; 426 goto err;
427 } 427 }
428 428
429 if ((krb5rc = krb5_sname_to_principal( 429 if ((krb5rc = krb5_sname_to_principal(krb5context,
430 krb5context, kssl_ctx->service_host, 430 kssl_ctx->service_host,
431 (kssl_ctx->service_name) ? kssl_ctx->service_name : KRB5SVC, 431 (kssl_ctx->service_name)? kssl_ctx->service_name: KRB5SVC,
432 KRB5_NT_SRV_HST, &krb5creds.server)) != 0) { 432 KRB5_NT_SRV_HST, &krb5creds.server)) != 0) {
433 BIO_snprintf(kssl_err->text,KSSL_ERR_MAX, 433 (void) snprintf(kssl_err->text,KSSL_ERR_MAX,
434 "krb5_sname_to_principal() fails for %s/%s\n", 434 "krb5_sname_to_principal() fails for %s/%s\n",
435 kssl_ctx->service_host, 435 kssl_ctx->service_host,
436 (kssl_ctx->service_name) ? kssl_ctx->service_name: KRB5SVC); 436 (kssl_ctx->service_name)? kssl_ctx->service_name: KRB5SVC);
437 kssl_err->reason = SSL_R_KRB5_C_INIT; 437 kssl_err->reason = SSL_R_KRB5_C_INIT;
438 goto err; 438 goto err;
439 } 439 }
@@ -566,7 +566,7 @@ kssl_TKT2tkt(
566 if (asn1ticket == NULL || asn1ticket->realm == NULL || 566 if (asn1ticket == NULL || asn1ticket->realm == NULL ||
567 asn1ticket->sname == NULL || 567 asn1ticket->sname == NULL ||
568 sk_ASN1_GENERALSTRING_num(asn1ticket->sname->namestring) < 2) { 568 sk_ASN1_GENERALSTRING_num(asn1ticket->sname->namestring) < 2) {
569 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, 569 (void) snprintf(kssl_err->text, KSSL_ERR_MAX,
570 "Null field in asn1ticket.\n"); 570 "Null field in asn1ticket.\n");
571 kssl_err->reason = SSL_R_KRB5_S_RD_REQ; 571 kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
572 return KRB5KRB_ERR_GENERIC; 572 return KRB5KRB_ERR_GENERIC;
@@ -574,7 +574,7 @@ kssl_TKT2tkt(
574 574
575 if ((new5ticket = 575 if ((new5ticket =
576 (krb5_ticket *)calloc(1, sizeof(krb5_ticket))) == NULL) { 576 (krb5_ticket *)calloc(1, sizeof(krb5_ticket))) == NULL) {
577 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, 577 (void) snprintf(kssl_err->text, KSSL_ERR_MAX,
578 "Unable to allocate new krb5_ticket.\n"); 578 "Unable to allocate new krb5_ticket.\n");
579 kssl_err->reason = SSL_R_KRB5_S_RD_REQ; 579 kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
580 return ENOMEM; /* or KRB5KRB_ERR_GENERIC; */ 580 return ENOMEM; /* or KRB5KRB_ERR_GENERIC; */
@@ -588,7 +588,7 @@ kssl_TKT2tkt(
588 gstr_svc->length, (char *)gstr_svc->data, gstr_host->length, 588 gstr_svc->length, (char *)gstr_svc->data, gstr_host->length,
589 (char *)gstr_host->data)) != 0) { 589 (char *)gstr_host->data)) != 0) {
590 free(new5ticket); 590 free(new5ticket);
591 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, 591 (void) snprintf(kssl_err->text, KSSL_ERR_MAX,
592 "Error building ticket server principal.\n"); 592 "Error building ticket server principal.\n");
593 kssl_err->reason = SSL_R_KRB5_S_RD_REQ; 593 kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
594 return krb5rc; /* or KRB5KRB_ERR_GENERIC; */ 594 return krb5rc; /* or KRB5KRB_ERR_GENERIC; */
@@ -603,7 +603,7 @@ kssl_TKT2tkt(
603 if ((new5ticket->enc_part.ciphertext.data = 603 if ((new5ticket->enc_part.ciphertext.data =
604 calloc(1, asn1ticket->encdata->cipher->length)) == NULL) { 604 calloc(1, asn1ticket->encdata->cipher->length)) == NULL) {
605 free(new5ticket); 605 free(new5ticket);
606 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, 606 (void) snprintf(kssl_err->text, KSSL_ERR_MAX,
607 "Error allocating cipher in krb5ticket.\n"); 607 "Error allocating cipher in krb5ticket.\n");
608 kssl_err->reason = SSL_R_KRB5_S_RD_REQ; 608 kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
609 return KRB5KRB_ERR_GENERIC; 609 return KRB5KRB_ERR_GENERIC;
@@ -743,7 +743,7 @@ kssl_sget_tkt(
743 p = (unsigned char *)indata->data; 743 p = (unsigned char *)indata->data;
744 if ((asn1ticket = (KRB5_TKTBODY *) d2i_KRB5_TICKET(NULL, &p, 744 if ((asn1ticket = (KRB5_TKTBODY *) d2i_KRB5_TICKET(NULL, &p,
745 (long)indata->length)) == NULL) { 745 (long)indata->length)) == NULL) {
746 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, 746 (void) snprintf(kssl_err->text, KSSL_ERR_MAX,
747 "d2i_KRB5_TICKET() ASN.1 decode failure.\n"); 747 "d2i_KRB5_TICKET() ASN.1 decode failure.\n");
748 kssl_err->reason = SSL_R_KRB5_S_RD_REQ; 748 kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
749 goto err; 749 goto err;
@@ -752,7 +752,7 @@ kssl_sget_tkt(
752 /* Was: krb5rc = krb5_decode_ticket(krb5in_data,&krb5ticket)) != 0) */ 752 /* Was: krb5rc = krb5_decode_ticket(krb5in_data,&krb5ticket)) != 0) */
753 if ((krb5rc = kssl_TKT2tkt(krb5context, asn1ticket, &krb5ticket, 753 if ((krb5rc = kssl_TKT2tkt(krb5context, asn1ticket, &krb5ticket,
754 kssl_err)) != 0) { 754 kssl_err)) != 0) {
755 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, 755 (void) snprintf(kssl_err->text, KSSL_ERR_MAX,
756 "Error converting ASN.1 ticket to krb5_ticket.\n"); 756 "Error converting ASN.1 ticket to krb5_ticket.\n");
757 kssl_err->reason = SSL_R_KRB5_S_RD_REQ; 757 kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
758 goto err; 758 goto err;
@@ -761,7 +761,7 @@ kssl_sget_tkt(
761 if (!krb5_principal_compare(krb5context, krb5server, 761 if (!krb5_principal_compare(krb5context, krb5server,
762 krb5ticket->server)) { 762 krb5ticket->server)) {
763 krb5rc = KRB5_PRINC_NOMATCH; 763 krb5rc = KRB5_PRINC_NOMATCH;
764 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, 764 (void) snprintf(kssl_err->text, KSSL_ERR_MAX,
765 "server principal != ticket principal\n"); 765 "server principal != ticket principal\n");
766 kssl_err->reason = SSL_R_KRB5_S_RD_REQ; 766 kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
767 goto err; 767 goto err;
@@ -769,14 +769,14 @@ kssl_sget_tkt(
769 if ((krb5rc = krb5_kt_get_entry(krb5context, krb5keytab, 769 if ((krb5rc = krb5_kt_get_entry(krb5context, krb5keytab,
770 krb5ticket->server, krb5ticket->enc_part.kvno, 770 krb5ticket->server, krb5ticket->enc_part.kvno,
771 krb5ticket->enc_part.enctype, &kt_entry)) != 0) { 771 krb5ticket->enc_part.enctype, &kt_entry)) != 0) {
772 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, 772 (void) snprintf(kssl_err->text, KSSL_ERR_MAX,
773 "krb5_kt_get_entry() fails with %x.\n", krb5rc); 773 "krb5_kt_get_entry() fails with %x.\n", krb5rc);
774 kssl_err->reason = SSL_R_KRB5_S_RD_REQ; 774 kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
775 goto err; 775 goto err;
776 } 776 }
777 if ((krb5rc = krb5_decrypt_tkt_part(krb5context, &kt_entry.key, 777 if ((krb5rc = krb5_decrypt_tkt_part(krb5context, &kt_entry.key,
778 krb5ticket)) != 0) { 778 krb5ticket)) != 0) {
779 BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, 779 (void) snprintf(kssl_err->text, KSSL_ERR_MAX,
780 "krb5_decrypt_tkt_part() failed.\n"); 780 "krb5_decrypt_tkt_part() failed.\n");
781 kssl_err->reason = SSL_R_KRB5_S_RD_REQ; 781 kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
782 goto err; 782 goto err;
diff --git a/src/lib/libssl/src/ssl/kssl.h b/src/lib/libssl/src/ssl/kssl.h
index 8242fd5eeb..ca0ebac147 100644
--- a/src/lib/libssl/src/ssl/kssl.h
+++ b/src/lib/libssl/src/ssl/kssl.h
@@ -116,10 +116,10 @@ typedef unsigned char krb5_octet;
116#define KSSL_CLOCKSKEW 300; 116#define KSSL_CLOCKSKEW 300;
117#endif 117#endif
118 118
119#define KSSL_ERR_MAX 255 119#define KSSL_ERR_MAX 256
120typedef struct kssl_err_st { 120typedef struct kssl_err_st {
121 int reason; 121 int reason;
122 char text[KSSL_ERR_MAX+1]; 122 char text[KSSL_ERR_MAX];
123 } KSSL_ERR; 123 } KSSL_ERR;
124 124
125 125
diff --git a/src/lib/libssl/src/ssl/ssl_ciph.c b/src/lib/libssl/src/ssl/ssl_ciph.c
index f37c70cf91..0e24e0a5c6 100644
--- a/src/lib/libssl/src/ssl/ssl_ciph.c
+++ b/src/lib/libssl/src/ssl/ssl_ciph.c
@@ -1499,7 +1499,7 @@ const char *rule_str)
1499char 1499char
1500*SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) 1500*SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
1501{ 1501{
1502 int is_export, pkl, kl; 1502 int is_export, pkl, kl, l;
1503 const char *ver, *exp_str; 1503 const char *ver, *exp_str;
1504 const char *kx, *au, *enc, *mac; 1504 const char *kx, *au, *enc, *mac;
1505 unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, alg2; 1505 unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, alg2;
@@ -1672,11 +1672,14 @@ char
1672 return("Buffer too small"); 1672 return("Buffer too small");
1673 1673
1674#ifdef KSSL_DEBUG 1674#ifdef KSSL_DEBUG
1675 BIO_snprintf(buf, len, format, cipher->name, ver, kx, au, enc, mac, exp_str, alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl); 1675 l = snprintf(buf, len, format, cipher->name, ver, kx, au, enc, mac, exp_str, alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl);
1676#else 1676#else
1677 BIO_snprintf(buf, len, format, cipher->name, ver, kx, au, enc, mac, exp_str); 1677 l = snprintf(buf, len, format, cipher->name, ver, kx, au, enc, mac, exp_str);
1678#endif /* KSSL_DEBUG */ 1678#endif /* KSSL_DEBUG */
1679 return (buf); 1679 if (l >= len || l == -1)
1680 return("Buffer too small");
1681 else
1682 return (buf);
1680} 1683}
1681 1684
1682char 1685char
diff --git a/src/lib/libssl/src/ssl/ssltest.c b/src/lib/libssl/src/ssl/ssltest.c
index 269d171615..664147cb6a 100644
--- a/src/lib/libssl/src/ssl/ssltest.c
+++ b/src/lib/libssl/src/ssl/ssltest.c
@@ -1820,8 +1820,8 @@ process_proxy_debug(int indent, const char *format, ...)
1820 char my_format[256]; 1820 char my_format[256];
1821 va_list args; 1821 va_list args;
1822 1822
1823 BIO_snprintf(my_format, sizeof(my_format), "%*.*s %s", 1823 (void) snprintf(my_format, sizeof(my_format), "%*.*s %s",
1824 indent, indent, indentation, format); 1824 indent, indent, indentation, format);
1825 1825
1826 va_start(args, format); 1826 va_start(args, format);
1827 vfprintf(stderr, my_format, args); 1827 vfprintf(stderr, my_format, args);
@@ -2311,8 +2311,8 @@ psk_client_callback(SSL *ssl, const char *hint, char *identity,
2311 int ret; 2311 int ret;
2312 unsigned int psk_len = 0; 2312 unsigned int psk_len = 0;
2313 2313
2314 ret = BIO_snprintf(identity, max_identity_len, "Client_identity"); 2314 ret = snprintf(identity, max_identity_len, "Client_identity");
2315 if (ret < 0) 2315 if (ret >= max_identity_len || ret == -1)
2316 goto out_err; 2316 goto out_err;
2317 if (debug) 2317 if (debug)
2318 fprintf(stderr, "client: created identity '%s' len=%d\n", identity, ret); 2318 fprintf(stderr, "client: created identity '%s' len=%d\n", identity, ret);
diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c
index f37c70cf91..0e24e0a5c6 100644
--- a/src/lib/libssl/ssl_ciph.c
+++ b/src/lib/libssl/ssl_ciph.c
@@ -1499,7 +1499,7 @@ const char *rule_str)
1499char 1499char
1500*SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) 1500*SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
1501{ 1501{
1502 int is_export, pkl, kl; 1502 int is_export, pkl, kl, l;
1503 const char *ver, *exp_str; 1503 const char *ver, *exp_str;
1504 const char *kx, *au, *enc, *mac; 1504 const char *kx, *au, *enc, *mac;
1505 unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, alg2; 1505 unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, alg2;
@@ -1672,11 +1672,14 @@ char
1672 return("Buffer too small"); 1672 return("Buffer too small");
1673 1673
1674#ifdef KSSL_DEBUG 1674#ifdef KSSL_DEBUG
1675 BIO_snprintf(buf, len, format, cipher->name, ver, kx, au, enc, mac, exp_str, alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl); 1675 l = snprintf(buf, len, format, cipher->name, ver, kx, au, enc, mac, exp_str, alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl);
1676#else 1676#else
1677 BIO_snprintf(buf, len, format, cipher->name, ver, kx, au, enc, mac, exp_str); 1677 l = snprintf(buf, len, format, cipher->name, ver, kx, au, enc, mac, exp_str);
1678#endif /* KSSL_DEBUG */ 1678#endif /* KSSL_DEBUG */
1679 return (buf); 1679 if (l >= len || l == -1)
1680 return("Buffer too small");
1681 else
1682 return (buf);
1680} 1683}
1681 1684
1682char 1685char