summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-09-22 19:11:54 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-09-22 19:11:54 +0200
commitada54defbcb037f8858b475f90ef215b7d1b44a6 (patch)
tree16cc7bfa2420d91829a57f709d491cfd08380b6e
parent2c4d3dd510a806344e4a3c6507d7f397a68c980c (diff)
downloadplan9front-ada54defbcb037f8858b475f90ef215b7d1b44a6.tar.xz
libsec: handle missing signature case; can happen because some ciphers make it optional
-rw-r--r--sys/src/libsec/port/tlshand.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/src/libsec/port/tlshand.c b/sys/src/libsec/port/tlshand.c
index 8f5c570d3..4a2e4f481 100644
--- a/sys/src/libsec/port/tlshand.c
+++ b/sys/src/libsec/port/tlshand.c
@@ -981,6 +981,9 @@ verifyDHparams(TlsConnection *c, Bytes *par, Bytes *sig, int sigalg)
RSApub *pk;
char *err;
+ if(sig == nil || sig->len <= 0)
+ return "no signature";
+
pk = X509toRSApub(c->cert->data, c->cert->len, nil, 0);
if(pk == nil)
return "bad certificate";
@@ -1767,7 +1770,7 @@ msgRecv(TlsConnection *c, Msg *m)
p += nn, n -= nn;
} else {
/* should not happen */
- break;
+ goto Short;
}
m->u.serverKeyExchange.dh_parameters = makebytes(s, p - s);
if(n >= 2){