tMake sure snarf is <64kB, since the wire count is only 16 bits. - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit efc2b0c99e1a4f9d2be9e72785d566df903c66fb
parent dc9d0ffc7558dacde0df81ff3b278fa6f356f46f
Author: rsc 
Date:   Tue,  2 Mar 2004 20:02:13 +0000

Make sure snarf is <64kB, since the wire count
is only 16 bits.

Diffstat:
  M src/cmd/samterm/mesg.c              |      15 +++++++++++----

1 file changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/src/cmd/samterm/mesg.c b/src/cmd/samterm/mesg.c
t@@ -646,10 +646,17 @@ hsetsnarf(int nc)
         if(n >= 0){
                 if(!s1)
                         n = 0;
-                s1 = realloc(s1, n+1);
-                if (!s1)
-                        panic("realloc");
-                s1[n] = 0;
+                if(n > 65535){
+                        s1 = strdup("");
+                        if (!s1)
+                                panic("strdup");
+                        n = strlen(s1);
+                }else{
+                        s1 = realloc(s1, n+1);
+                        if (!s1)
+                                panic("realloc");
+                        s1[n] = 0;
+                }
                 snarflen = n;
                 outTs(Tsetsnarf, n);
                 if(n>0 && write(hostfd[1], s1, n)!=n)