diff -up netkit-rsh-0.17/rexecd/rexecd.c netkit-rsh-0.17/rexecd/rexecd.c --- netkit-rsh-0.17/rexecd/rexecd.c 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 netkit-rsh-0.17/rshd/rshd.c --- netkit-rsh-0.17/rshd/rshd.c 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) {