tMake sure snarf is <64kB, since the wire count is only 16 bits. - plan9port - [fork] Plan 9 from user space
HTML git clone git://src.adamsgaard.dk/plan9port
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit efc2b0c99e1a4f9d2be9e72785d566df903c66fb
DIR parent dc9d0ffc7558dacde0df81ff3b278fa6f356f46f
HTML Author: rsc <devnull@localhost>
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(-)
---
DIR 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("<snarf too long>");
+ 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)