From ada54defbcb037f8858b475f90ef215b7d1b44a6 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 22 Sep 2015 19:11:54 +0200 Subject: libsec: handle missing signature case; can happen because some ciphers make it optional --- sys/src/libsec/port/tlshand.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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){ -- cgit v1.2.3