telnetd: fix the crash that's been talked about the past couple days.

(Move initialization of the slc table earlier so it doesn't get
accessed before that happens.)

Calling the crash a DoS or security problem is a bit overwrought; it's
just a bug.
This commit is contained in:
dholland 2022-08-26 19:30:44 +00:00
parent 0294a66b69
commit b96fc4cb8e
1 changed files with 7 additions and 7 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: telnetd.c,v 1.57 2021/12/08 20:21:09 andvar Exp $ */
/* $NetBSD: telnetd.c,v 1.58 2022/08/26 19:30:44 dholland Exp $ */
/*
* Copyright (C) 1997 and 1998 WIDE Project.
@ -65,7 +65,7 @@ __COPYRIGHT("@(#) Copyright (c) 1989, 1993\
#if 0
static char sccsid[] = "@(#)telnetd.c 8.4 (Berkeley) 5/30/95";
#else
__RCSID("$NetBSD: telnetd.c,v 1.57 2021/12/08 20:21:09 andvar Exp $");
__RCSID("$NetBSD: telnetd.c,v 1.58 2022/08/26 19:30:44 dholland Exp $");
#endif
#endif /* not lint */
@ -677,6 +677,11 @@ doit(struct sockaddr *who)
int flags;
char user_name[256];
/*
* Initialize the slc mapping table.
*/
get_slc_defaults();
/*
* Find an available pty to use.
*/
@ -743,11 +748,6 @@ telnet(int f, int p)
const char *IM;
struct pollfd set[2];
/*
* Initialize the slc mapping table.
*/
get_slc_defaults();
/*
* Do some tests where it is desirable to wait for a response.
* Rather than doing them slowly, one at a time, do them all