diff --git a/NT/tools/lib.pike b/NT/tools/lib.pike
index bd2bd5b8c9ab7cc929ccf09d69792b8bb403c509..7e4d2bcad5058f881a3fbb3539858645bb27b444 100644
--- a/NT/tools/lib.pike
+++ b/NT/tools/lib.pike
@@ -203,8 +203,12 @@ int silent_do_cmd(string *cmd, mixed|void filter, int|void silent)
 
       while(1)
       {
-	string s;
-	sscanf(f->read(4),"%4c",int len);
+	string s = f->read(4);
+	if (!s) {
+	  werror("Connection closed!\n");
+	  exit(1);
+	}
+	sscanf(s,"%4c",int len);
 	if(!len) break;
 	s=f->read(len);
 	s=replace(s,"\r\n","\n");