git: eeadef8fd523 - stable/12 - telnet: Fix telnet segfault when invalid set or help help commands

From: Cy Schubert <cy_at_FreeBSD.org>
Date: Fri, 22 Jul 2022 13:04:30 UTC
The branch stable/12 has been updated by cy:

URL: https://cgit.FreeBSD.org/src/commit/?id=eeadef8fd52388bb9345df0ef472e0e7feca4afa

commit eeadef8fd52388bb9345df0ef472e0e7feca4afa
Author:     Cy Schubert <cy@FreeBSD.org>
AuthorDate: 2022-07-14 04:42:06 +0000
Commit:     Cy Schubert <cy@FreeBSD.org>
CommitDate: 2022-07-22 13:04:07 +0000

    telnet: Fix telnet segfault when invalid set or help help commands
    
    Silently ignore invalid set ' ' and invalid help help commands.
    This is the same fix applied by NetBSD in hg commit 1019940:4f248823eaff.
    
    PR:             265097
    Reported by:    Simon Josefsson <simon@josefsson.org>
    Obtained from:  NetBSD hg commit 1019940:4f248823eaff
                    NetBSD PR/56918
    
    (cherry picked from commit a7399ea2dd7810e76dcfd52248764cb8004d49a4)
---
 contrib/telnet/telnet/commands.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/contrib/telnet/telnet/commands.c b/contrib/telnet/telnet/commands.c
index 21e973209d9b..fd4597941724 100644
--- a/contrib/telnet/telnet/commands.c
+++ b/contrib/telnet/telnet/commands.c
@@ -938,7 +938,7 @@ setcmd(int argc, char *argv[])
     }
 
     ct = getset(argv[1]);
-    if (ct == 0) {
+    if (ct == 0 || !(ct->name && ct->name[0] != ' ')) {
 	c = GETTOGGLE(argv[1]);
 	if (c == 0) {
 	    fprintf(stderr, "'%s': unknown argument ('set ?' for help).\n",
@@ -1014,7 +1014,7 @@ unsetcmd(int argc, char *argv[])
     while (argc--) {
 	name = *argv++;
 	ct = getset(name);
-	if (ct == 0) {
+	if (ct == 0 || !(ct->name && ct->name[0] != ' ')) {
 	    c = GETTOGGLE(name);
 	    if (c == 0) {
 		fprintf(stderr, "'%s': unknown argument ('unset ?' for help).\n",
@@ -2694,7 +2694,7 @@ help(int argc, char *argv[])
 			printf("?Ambiguous help command %s\n", arg);
 		else if (c == (Command *)0)
 			printf("?Invalid help command %s\n", arg);
-		else
+		else if (c->help)
 			printf("%s\n", c->help);
 	}
 	return 0;