diff options
author | Bodo Möller <bodo@openssl.org> | 2011-09-05 13:31:17 +0000 |
---|---|---|
committer | Bodo Möller <bodo@openssl.org> | 2011-09-05 13:31:17 +0000 |
commit | 612fcfbd290d4dba96945c7c5bc8ea0c75ffefa1 (patch) | |
tree | 99832426a2bb250ca9ff5637b561eaff930da24e /ssl | |
parent | e7928282d0148af5f28fa3437a625a2006af0214 (diff) |
Fix d2i_SSL_SESSION.
Diffstat (limited to 'ssl')
-rw-r--r-- | ssl/ssl.h | 10 | ||||
-rw-r--r-- | ssl/ssl_asn1.c | 13 |
2 files changed, 19 insertions, 4 deletions
@@ -447,10 +447,12 @@ struct ssl_method_st * Session_ID_context [ 4 ] EXPLICIT OCTET STRING, -- the Session ID context * Verify_result [ 5 ] EXPLICIT INTEGER, -- X509_V_... code for `Peer' * HostName [ 6 ] EXPLICIT OCTET STRING, -- optional HostName from servername TLS extension - * ECPointFormatList [ 7 ] OCTET STRING, -- optional EC point format list from TLS extension - * PSK_identity_hint [ 8 ] EXPLICIT OCTET STRING, -- optional PSK identity hint - * PSK_identity [ 9 ] EXPLICIT OCTET STRING -- optional PSK identity - * SRP_username [ 11 ] EXPLICIT OCTET STRING -- optional SRP username + * PSK_identity_hint [ 7 ] EXPLICIT OCTET STRING, -- optional PSK identity hint + * PSK_identity [ 8 ] EXPLICIT OCTET STRING, -- optional PSK identity + * Ticket_lifetime_hint [9] EXPLICIT INTEGER, -- server's lifetime hint for session ticket + * Ticket [10] EXPLICIT OCTET STRING, -- session ticket (clients only) + * Compression_meth [11] EXPLICIT OCTET STRING, -- optional compression method + * SRP_username [ 12 ] EXPLICIT OCTET STRING -- optional SRP username * } * Look in ssl/ssl_asn1.c for more details * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). diff --git a/ssl/ssl_asn1.c b/ssl/ssl_asn1.c index d02c3af53b..8fa8c669b1 100644 --- a/ssl/ssl_asn1.c +++ b/ssl/ssl_asn1.c @@ -572,6 +572,19 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, } else ret->psk_identity_hint=NULL; + + os.length=0; + os.data=NULL; + M_ASN1_D2I_get_EXP_opt(osp,d2i_ASN1_OCTET_STRING,8); + if (os.data) + { + ret->psk_identity = BUF_strndup((char *)os.data, os.length); + OPENSSL_free(os.data); + os.data = NULL; + os.length = 0; + } + else + ret->psk_identity=NULL; #endif /* OPENSSL_NO_PSK */ #ifndef OPENSSL_NO_TLSEXT |