blob: e8c3f1d84bcb6efc2431e996f047016e7ed24bd7 [file] [log] [blame]
Andrew Geissler220dafd2023-10-04 10:18:08 -05001From 4133a888aa256312186962ab70d4a36eed5920c1 Mon Sep 17 00:00:00 2001
2From: Brooks Davis <brooks@FreeBSD.org>
3Date: Mon, 26 Sep 2022 18:56:51 +0100
4Subject: [PATCH] telnetd: fix two-byte input crash
5
6Move initialization of the slc table earlier so it doesn't get
7accessed before that happens.
8
9For details on the issue, see:
10https://pierrekim.github.io/blog/2022-08-24-2-byte-dos-freebsd-netbsd-telnetd-netkit-telnetd-inetutils-telnetd-kerberos-telnetd.html
11
12Reviewed by: cy
13Obtained from: NetBSD via cy
14Differential Revision: https://reviews.freebsd.org/D36680
15
16CVE: CVE-2022-39028
17Upstream-Status: Backport [https://cgit.freebsd.org/src/commit/?id=6914ffef4e23]
18
19(cherry picked from commit 6914ffef4e2318ca1d0ead28eafb6f06055ce0f8)
20Signed-off-by: Sanjay Chitroda <sanjay.chitroda@einfochips.com>
21
22---
23 telnetd/telnetd.c | 10 +++++-----
24 1 file changed, 5 insertions(+), 5 deletions(-)
25
26diff --git a/telnetd/telnetd.c b/telnetd/telnetd.c
27index f36f505..efa0fe1 100644
28--- a/telnetd/telnetd.c
29+++ b/telnetd/telnetd.c
30@@ -615,6 +615,11 @@ doit(struct sockaddr_in *who)
31 int level;
32 char user_name[256];
33
34+ /*
35+ * Initialize the slc mapping table.
36+ */
37+ get_slc_defaults();
38+
39 /*
40 * Find an available pty to use.
41 */
42@@ -698,11 +703,6 @@ void telnet(int f, int p)
43 char *HE;
44 const char *IM;
45
46- /*
47- * Initialize the slc mapping table.
48- */
49- get_slc_defaults();
50-
51 /*
52 * Do some tests where it is desireable to wait for a response.
53 * Rather than doing them slowly, one at a time, do them all