Blob Blame History Raw
diff -up netkit-rsh-0.17/rexecd/rexecd.c.orig netkit-rsh-0.17/rexecd/rexecd.c
--- netkit-rsh-0.17/rexecd/rexecd.c.orig	2017-10-17 10:50:49.508905643 +0200
+++ netkit-rsh-0.17/rexecd/rexecd.c	2017-10-17 11:47:32.563051760 +0200
@@ -261,7 +261,14 @@ doit(struct sockaddr_in *fromp)
 		fatal ("sysconf (_SC_ARG_MAX) failed\n");
 	}
 
-	cmdbuf = malloc (++cmdbuflen);
+	cmdbuflen++;
+	/* Decrease cmdbuflen to reasonable number if it's too high */
+	if ((size_t) cmdbuflen > 131072) {
+		cmdbuflen = 131072;
+		syslog (LOG_INFO, "Decreasing cmdbuflen because it was too high (>131072 bytes)");
+	}
+
+	cmdbuf = malloc (cmdbuflen);
 	if (cmdbuf == NULL) {
 		syslog (LOG_ERR, "Could not allocate space for cmdbuf");
 		fatal ("Could not allocate space for cmdbuf\n");
diff -up netkit-rsh-0.17/rshd/rshd.c.orig netkit-rsh-0.17/rshd/rshd.c
--- netkit-rsh-0.17/rshd/rshd.c.orig	2017-10-17 11:26:15.192221595 +0200
+++ netkit-rsh-0.17/rshd/rshd.c	2017-10-17 11:47:26.065986220 +0200
@@ -433,8 +433,10 @@ doit(struct sockaddr_storage *fromp, soc
 
 	cmdbuflen++;
 	/* Decrease cmdbuflen to reasonable number if it's too high */
-	if ((size_t) cmdbuflen > 131072)
+	if ((size_t) cmdbuflen > 131072) {
 		cmdbuflen = 131072;
+		syslog (LOG_INFO, "Decreasing cmdbuflen because it was too high (>131072 bytes)");		
+	}
 
 	cmdbuf = malloc (cmdbuflen);
 	if (cmdbuf == NULL) {