summaryrefslogtreecommitdiffstats
path: root/ssl/s3_lib.c
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2017-09-22 16:06:52 +0100
committerDr. Stephen Henson <steve@openssl.org>2017-09-22 22:59:42 +0100
commit9e84a42db497e06a38f804b5acd09b6aa4f87db3 (patch)
treef540bd69b0d412561f4d71639704f1117bd6fc46 /ssl/s3_lib.c
parent6d50589c0434a78733d40d3a0fd7cb97eef1cb94 (diff)
Store groups as uint16_t
Instead of storing supported groups in on-the-wire format store them as parsed uint16_t values. This simplifies handling of groups as the values can be directly used instead of being converted. Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/4406)
Diffstat (limited to 'ssl/s3_lib.c')
-rw-r--r--ssl/s3_lib.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/ssl/s3_lib.c b/ssl/s3_lib.c
index 8895388576..4127b28ea4 100644
--- a/ssl/s3_lib.c
+++ b/ssl/s3_lib.c
@@ -3602,25 +3602,23 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
#ifndef OPENSSL_NO_EC
case SSL_CTRL_GET_GROUPS:
{
- unsigned char *clist;
+ uint16_t *clist;
size_t clistlen;
if (!s->session)
return 0;
clist = s->session->ext.supportedgroups;
- clistlen = s->session->ext.supportedgroups_len / 2;
+ clistlen = s->session->ext.supportedgroups_len;
if (parg) {
size_t i;
int *cptr = parg;
- unsigned int cid, nid;
for (i = 0; i < clistlen; i++) {
- n2s(clist, cid);
/* TODO(TLS1.3): Handle DH groups here */
- nid = tls1_ec_curve_id2nid(cid, NULL);
+ int nid = tls1_ec_curve_id2nid(clist[i], NULL);
if (nid != 0)
cptr[i] = nid;
else
- cptr[i] = TLSEXT_nid_unknown | cid;
+ cptr[i] = TLSEXT_nid_unknown | clist[i];
}
}
return (int)clistlen;