summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2021-11-09 01:46:13 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2021-11-09 01:46:13 +0000
commita4c1f3cc18df6fddd548f4df9f209695c4eb7263 (patch)
treeb7b5f27c8cd1ab272561280cfa073a935bf15ac3 /sys/src
parent68572ab45102118db695ab1bcc935b9b3b95c7ca (diff)
devtls: reject zero length records (thanks sigrid)
zero length record causes ensure() todo nothing, while qgrab() assumes there is at least one buffer in the queue and would dereference the nil buffer.
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/9/port/devtls.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/src/9/port/devtls.c b/sys/src/9/port/devtls.c
index 4b691c50e..e4974ec77 100644
--- a/sys/src/9/port/devtls.c
+++ b/sys/src/9/port/devtls.c
@@ -766,8 +766,8 @@ if(tr->debug)pprint("consumed %d header\n", RecHdrLen);
if(ver != tr->version && (tr->verset || ver < MinProtoVersion || ver > MaxProtoVersion))
rcvError(tr, EProtocolVersion, "devtls expected ver=%x%s, saw (len=%d) type=%x ver=%x '%.12s'",
tr->version, tr->verset?"/set":"", len, type, ver, (char*)header);
- if(len > MaxCipherRecLen || len < 0)
- rcvError(tr, ERecordOverflow, "record message too long %d", len);
+ if(len > MaxCipherRecLen || len <= 0)
+ rcvError(tr, ERecordOverflow, "bad record message length %d", len);
ensure(tr, &tr->unprocessed, len);
nconsumed = 0;
poperror();