tparanoia about extension - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit f2466297885cfdd3424033139d5aa14065791b84
parent 1e22e8e41463896755b37d45bf76e14683e30f94
Author: rsc 
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(-)
---
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);