tparanoia about extension - plan9port - [fork] Plan 9 from user space
(HTM) git clone git://src.adamsgaard.dk/plan9port
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit f2466297885cfdd3424033139d5aa14065791b84
(DIR) parent 1e22e8e41463896755b37d45bf76e14683e30f94
(HTM) Author: rsc <devnull@localhost>
Date: Thu, 4 May 2006 19:10:11 +0000
paranoia about extension
Diffstat:
M src/cmd/9pserve.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
---
(DIR) diff --git a/src/cmd/9pserve.c b/src/cmd/9pserve.c
t@@ -10,7 +10,8 @@ enum
{
STACK = 32768,
NHASH = 31,
- MAXMSG = 64 /* per connection */
+ MAXMSG = 64, /* per connection */
+ MAXMSGSIZE = 4*1024*1024
};
typedef struct Hash Hash;
t@@ -231,6 +232,8 @@ mainproc(void *v)
if(n != nn)
sysfatal("error writing Tversion: %r\n");
n = read9pmsg(0, vbuf, sizeof vbuf);
+ if(n < 0)
+ sysfatal("read9pmsg failure"):
if(convM2S(vbuf, n, &f) != n)
sysfatal("convM2S failure");
if(f.msize < msize)
t@@ -1220,6 +1223,8 @@ read9ppkt(Ioproc *io, int fd)
if(n != 4)
return nil;
n = GBIT32(buf);
+ if(n > MAXMSGSIZE)
+ return nil;
pkt = emalloc(n);
PBIT32(pkt, n);
nn = ioreadn(io, fd, pkt+4, n-4);