commit efc2b0c99e1a4f9d2be9e72785d566df903c66fb
parent dc9d0ffc7558dacde0df81ff3b278fa6f356f46f
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:
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/cmd/samterm/mesg.c b/src/cmd/samterm/mesg.c
@@ -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)