From 6fb4f30611e8e5a5598234463f644cb950de760d Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 30 Mar 2017 13:33:33 +0200 Subject: [PATCH] Convert SSL_SESSION_ASN1 to use size specific integers This increases portability of SSL_SESSION files between architectures where the size of |long| may vary. Before this, SSL_SESSION files produced on a 64-bit long architecture may break on a 32-bit long architecture. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/3120) --- ssl/ssl_asn1.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/ssl/ssl_asn1.c b/ssl/ssl_asn1.c index 8f55d8fde9..39fe4e1f20 100644 --- a/ssl/ssl_asn1.c +++ b/ssl/ssl_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -37,24 +37,24 @@ #include #include #include "ssl_locl.h" -#include +#include "internal/asn1t.h" #include typedef struct { - long version; - long ssl_version; + uint32_t version; + int32_t ssl_version; ASN1_OCTET_STRING *cipher; ASN1_OCTET_STRING *comp_id; ASN1_OCTET_STRING *master_key; ASN1_OCTET_STRING *session_id; ASN1_OCTET_STRING *key_arg; - long time; - long timeout; + int64_t time; + int64_t timeout; X509 *peer; ASN1_OCTET_STRING *session_id_context; - long verify_result; + int32_t verify_result; ASN1_OCTET_STRING *tlsext_hostname; - long tlsext_tick_lifetime_hint; + int64_t tlsext_tick_lifetime_hint; ASN1_OCTET_STRING *tlsext_tick; #ifndef OPENSSL_NO_PSK ASN1_OCTET_STRING *psk_identity_hint; @@ -63,33 +63,33 @@ typedef struct { #ifndef OPENSSL_NO_SRP ASN1_OCTET_STRING *srp_username; #endif - long flags; + uint64_t flags; } SSL_SESSION_ASN1; ASN1_SEQUENCE(SSL_SESSION_ASN1) = { - ASN1_SIMPLE(SSL_SESSION_ASN1, version, LONG), - ASN1_SIMPLE(SSL_SESSION_ASN1, ssl_version, LONG), + ASN1_SIMPLE(SSL_SESSION_ASN1, version, UINT32), + ASN1_SIMPLE(SSL_SESSION_ASN1, ssl_version, INT32), ASN1_SIMPLE(SSL_SESSION_ASN1, cipher, ASN1_OCTET_STRING), ASN1_SIMPLE(SSL_SESSION_ASN1, session_id, ASN1_OCTET_STRING), ASN1_SIMPLE(SSL_SESSION_ASN1, master_key, ASN1_OCTET_STRING), ASN1_IMP_OPT(SSL_SESSION_ASN1, key_arg, ASN1_OCTET_STRING, 0), - ASN1_EXP_OPT(SSL_SESSION_ASN1, time, ZLONG, 1), - ASN1_EXP_OPT(SSL_SESSION_ASN1, timeout, ZLONG, 2), + ASN1_EXP_OPT(SSL_SESSION_ASN1, time, ZINT64, 1), + ASN1_EXP_OPT(SSL_SESSION_ASN1, timeout, ZINT64, 2), ASN1_EXP_OPT(SSL_SESSION_ASN1, peer, X509, 3), ASN1_EXP_OPT(SSL_SESSION_ASN1, session_id_context, ASN1_OCTET_STRING, 4), - ASN1_EXP_OPT(SSL_SESSION_ASN1, verify_result, ZLONG, 5), + ASN1_EXP_OPT(SSL_SESSION_ASN1, verify_result, ZINT32, 5), ASN1_EXP_OPT(SSL_SESSION_ASN1, tlsext_hostname, ASN1_OCTET_STRING, 6), #ifndef OPENSSL_NO_PSK ASN1_EXP_OPT(SSL_SESSION_ASN1, psk_identity_hint, ASN1_OCTET_STRING, 7), ASN1_EXP_OPT(SSL_SESSION_ASN1, psk_identity, ASN1_OCTET_STRING, 8), #endif - ASN1_EXP_OPT(SSL_SESSION_ASN1, tlsext_tick_lifetime_hint, ZLONG, 9), + ASN1_EXP_OPT(SSL_SESSION_ASN1, tlsext_tick_lifetime_hint, ZUINT64, 9), ASN1_EXP_OPT(SSL_SESSION_ASN1, tlsext_tick, ASN1_OCTET_STRING, 10), ASN1_EXP_OPT(SSL_SESSION_ASN1, comp_id, ASN1_OCTET_STRING, 11), #ifndef OPENSSL_NO_SRP ASN1_EXP_OPT(SSL_SESSION_ASN1, srp_username, ASN1_OCTET_STRING, 12), #endif - ASN1_EXP_OPT(SSL_SESSION_ASN1, flags, ZLONG, 13) + ASN1_EXP_OPT(SSL_SESSION_ASN1, flags, ZUINT64, 13) } static_ASN1_SEQUENCE_END(SSL_SESSION_ASN1) IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(SSL_SESSION_ASN1) -- 2.25.1