Commit Diff


commit - dc9d0ffc7558dacde0df81ff3b278fa6f356f46f
commit + efc2b0c99e1a4f9d2be9e72785d566df903c66fb
blob - c332d7a81b2bd0081527e8275f892fb637d1720a
blob + 0bffad3d736f24f73c9833132cdf4d6b82ea28c7
--- src/cmd/samterm/mesg.c
+++ 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)