diff options
| author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-04-03 02:50:36 +0200 |
|---|---|---|
| committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-04-03 02:50:36 +0200 |
| commit | 02ffb19904f03cad21dd10a774705b9152d89010 (patch) | |
| tree | cb90ace20c4133eb35bb77181f95119479b094b8 | |
| parent | 1d891d163e814a93ee5346cf05b4fac297bf3a5c (diff) | |
| parent | 6ff5c10ffb06d10eee06f1d432f9cc4738496c07 (diff) | |
| download | plan9front-02ffb19904f03cad21dd10a774705b9152d89010.tar.xz | |
merge
| -rw-r--r-- | sys/src/libsec/port/tlshand.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/sys/src/libsec/port/tlshand.c b/sys/src/libsec/port/tlshand.c index a34a43106..d8ef46a0d 100644 --- a/sys/src/libsec/port/tlshand.c +++ b/sys/src/libsec/port/tlshand.c @@ -1402,12 +1402,10 @@ msgSend(TlsConnection *c, Msg *m, int act) if(m->u.clientKeyExchange.key == nil) break; n = m->u.clientKeyExchange.key->len; - if(c->version != SSL3Version){ - if(isECDHE(c->cipher)) - *p++ = n; - else - put16(p, n), p += 2; - } + if(isECDHE(c->cipher)) + *p++ = n; + else if(isDHE(c->cipher) || c->version != SSL3Version) + put16(p, n), p += 2; memmove(p, m->u.clientKeyExchange.key->data, n); p += n; break; @@ -1786,18 +1784,14 @@ msgRecv(TlsConnection *c, Msg *m) if(n == 0) break; } - if(c->version == SSL3Version) + if(n < 2) + goto Short; + if(isECDHE(c->cipher)) + nn = *p++, n--; + else if(isDHE(c->cipher) || c->version != SSL3Version) + nn = get16(p), p += 2, n -= 2; + else nn = n; - else{ - if(n < 2) - goto Short; - if(isECDHE(c->cipher)) - nn = *p++, n--; - else { - nn = get16(p); - p += 2, n -= 2; - } - } if(n < nn) goto Short; m->u.clientKeyExchange.key = makebytes(p, nn); |
