summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2016-12-26 15:34:01 +0000
committerjsing <>2016-12-26 15:34:01 +0000
commit184bac77338d562f8106b14d90eeebe2a0d55850 (patch)
tree8d4c994b773b032fa825882f2b6480cda81be7d1 /src
parent31656117a6540817602e4715e29bda545baa6151 (diff)
downloadopenbsd-184bac77338d562f8106b14d90eeebe2a0d55850.tar.gz
openbsd-184bac77338d562f8106b14d90eeebe2a0d55850.tar.bz2
openbsd-184bac77338d562f8106b14d90eeebe2a0d55850.zip
Restore previous ASN.1 encoding for the peer certificate - this was
unintentionally changed during the CBS/CBB rewrite. Issue reported by jeremy@ due to failing ruby tests. Analysis and near identical diff from Kazuki Yamaguchi <k at rhe.jp>.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/ssl_asn1.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c
index 36fbbbed98..707dc24d08 100644
--- a/src/lib/libssl/ssl_asn1.c
+++ b/src/lib/libssl/ssl_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_asn1.c,v 1.46 2016/12/26 15:28:42 jsing Exp $ */ 1/* $OpenBSD: ssl_asn1.c,v 1.47 2016/12/26 15:34:01 jsing Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2016 Joel Sing <jsing@openbsd.org> 4 * Copyright (c) 2016 Joel Sing <jsing@openbsd.org>
@@ -122,13 +122,11 @@ i2d_SSL_SESSION(SSL_SESSION *s, unsigned char **pp)
122 122
123 /* Peer certificate [3]. */ 123 /* Peer certificate [3]. */
124 if (s->peer != NULL) { 124 if (s->peer != NULL) {
125 if (!CBB_add_asn1(&session, &peer_cert, SSLASN1_PEER_CERT_TAG))
126 goto err;
127 if (!CBB_add_asn1(&peer_cert, &value, CBS_ASN1_OCTETSTRING))
128 goto err;
129 if ((len = i2d_X509(s->peer, &peer_cert_bytes)) <= 0) 125 if ((len = i2d_X509(s->peer, &peer_cert_bytes)) <= 0)
130 goto err; 126 goto err;
131 if (!CBB_add_bytes(&value, peer_cert_bytes, len)) 127 if (!CBB_add_asn1(&session, &peer_cert, SSLASN1_PEER_CERT_TAG))
128 goto err;
129 if (!CBB_add_bytes(&peer_cert, peer_cert_bytes, len))
132 goto err; 130 goto err;
133 } 131 }
134 132
@@ -312,7 +310,7 @@ d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length)
312 /* Peer certificate [3]. */ 310 /* Peer certificate [3]. */
313 X509_free(s->peer); 311 X509_free(s->peer);
314 s->peer = NULL; 312 s->peer = NULL;
315 if (!CBS_get_optional_asn1_octet_string(&session, &peer_cert, &present, 313 if (!CBS_get_optional_asn1(&session, &peer_cert, &present,
316 SSLASN1_PEER_CERT_TAG)) 314 SSLASN1_PEER_CERT_TAG))
317 goto err; 315 goto err;
318 if (present) { 316 if (present) {