diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-01-30 06:28:42 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-01-30 06:28:42 +0100 |
commit | 3787f721c1efe19c0502dc7e429459804100757d (patch) | |
tree | 2f13a3f87496668b131eff4025d62b8dfdf4ac2e /sys/src/cmd/exportfs | |
parent | dbbbff89151794c838319e831254bcff6b3dbbcf (diff) |
9p message size too small
various fileservers do not check if the message size is too small
(they subtract IOHDRSZ later from it to calculate iounit) which
can overflow.
Diffstat (limited to 'sys/src/cmd/exportfs')
-rw-r--r-- | sys/src/cmd/exportfs/exportsrv.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/src/cmd/exportfs/exportsrv.c b/sys/src/cmd/exportfs/exportsrv.c index 842880529..7e8d836ff 100644 --- a/sys/src/cmd/exportfs/exportsrv.c +++ b/sys/src/cmd/exportfs/exportsrv.c @@ -26,11 +26,17 @@ Xversion(Fsrpc *t) { Fcall rhdr; + if(t->work.msize < 256){ + reply(&t->work, &rhdr, "version: message size too small"); + t->busy = 0; + return; + } if(t->work.msize > messagesize) t->work.msize = messagesize; messagesize = t->work.msize; if(strncmp(t->work.version, "9P2000", 6) != 0){ reply(&t->work, &rhdr, Eversion); + t->busy = 0; return; } rhdr.version = "9P2000"; |