From: Dr. Stephen Henson Date: Sun, 29 Jan 2017 15:12:58 +0000 (+0000) Subject: Update macros. X-Git-Tag: OpenSSL_1_1_1-pre1~2520 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=787ebcafcd82daf5809ef308f8b6d6bbec17b354;p=oweals%2Fopenssl.git Update macros. Use TLS_MAX_SIGALGCNT for the maximum number of entries in the signature algorithms array. Use TLS_MAX_SIGSTRING_LEN for the maxiumum length of each signature component instead of a magic number. Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/2301) --- diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c index 6f7ef965be..c906061341 100644 --- a/ssl/t1_lib.c +++ b/ssl/t1_lib.c @@ -1715,11 +1715,12 @@ int SSL_get_shared_sigalgs(SSL *s, int idx, return (int)s->cert->shared_sigalgslen; } -#define MAX_SIGALGLEN (TLSEXT_hash_num * TLSEXT_signature_num * 2) +/* Maximum possible number of unique entries in sigalgs array */ +#define TLS_MAX_SIGALGCNT (OSSL_NELEM(sigalg_lookup_tbl) * 2) typedef struct { size_t sigalgcnt; - int sigalgs[MAX_SIGALGLEN]; + int sigalgs[TLS_MAX_SIGALGCNT]; } sig_cb_st; static void get_sigorhash(int *psig, int *phash, const char *str) @@ -1738,16 +1739,18 @@ static void get_sigorhash(int *psig, int *phash, const char *str) *phash = OBJ_ln2nid(str); } } +/* Maximum length of a signature algorithm string component */ +#define TLS_MAX_SIGSTRING_LEN 40 static int sig_cb(const char *elem, int len, void *arg) { sig_cb_st *sarg = arg; size_t i; - char etmp[40], *p; + char etmp[TLS_MAX_SIGSTRING_LEN], *p; int sig_alg = NID_undef, hash_alg = NID_undef; if (elem == NULL) return 0; - if (sarg->sigalgcnt == MAX_SIGALGLEN) + if (sarg->sigalgcnt == TLS_MAX_SIGALGCNT) return 0; if (len > (int)(sizeof(etmp) - 1)) return 0;