bin/50690: ftpd -h does not work for the SYST command (patch
included)
Alex Semenyaka
alexs at snark.ratmir.ru
Mon Apr 7 11:50:18 PDT 2003
>Number: 50690
>Category: bin
>Synopsis: ftpd -h does not work for the SYST command (patch included)
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Apr 07 11:50:15 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Alex Semenyaka
>Release: FreeBSD 4.8-RC i386
>Organization:
Ratmir
>Environment:
System: FreeBSD snark.ratmir.ru 4.8-RC FreeBSD 4.8-RC #7: Sun Mar 30 07:23:48 MSD 2003 root at snark.ratmir.ru:/usr/obj/usr/src/sys/SNARK i386
Same problem exists also in the -CURRENT branch.
>Description:
When you run ftpd with the switch -h, which hould prevent obtaining the
information about system you can still have such info with SYST command
>How-To-Repeat:
Tell to inetd to run ftpd with -h like this:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -h
Then do telnet to the port 21, log in and issue SYST command:
/tmp> telnet 0 21
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
220 FTP server ready.
user ftp
331 Guest login ok, send your email address as password.
pass a@
230 Guest login ok, access restrictions apply.
syst
215 UNIX Type: L8 Version: BSD-199506
quit
221 Goodbye.
Connection closed by foreign host.
>Fix:
Here is the patch for -CURRENT. In the case when ftpd has been run with
the -h switch the variable hostinfo is set to TRUE. In this case we
should report only CHAR_BIT for our system and hide all other information
as we do when this ftpd is built for the unknown platform:
Index: ftpcmd.y
===================================================================
RCS file: /usr/local/FreeBSD/src/libexec/ftpd/ftpcmd.y,v
retrieving revision 1.50
diff -u -U1 -r1.50 ftpcmd.y
--- ftpcmd.y 5 Feb 2003 11:11:32 -0000 1.50
+++ ftpcmd.y 5 Apr 2003 00:11:58 -0000
@@ -690,13 +690,17 @@
{
- if ($2)
+ if ($2) {
+ if (hostinfo)
#ifdef unix
#ifdef BSD
- reply(215, "UNIX Type: L%d Version: BSD-%d",
- CHAR_BIT, BSD);
+ reply(215, "UNIX Type: L%d Version: BSD-%d",
+ CHAR_BIT, BSD);
#else /* BSD */
- reply(215, "UNIX Type: L%d", CHAR_BIT);
+ reply(215, "UNIX Type: L%d", CHAR_BIT);
#endif /* BSD */
#else /* unix */
- reply(215, "UNKNOWN Type: L%d", CHAR_BIT);
+ reply(215, "UNKNOWN Type: L%d", CHAR_BIT);
#endif /* unix */
+ else
+ reply(215, "UNKNOWN Type: L%d", CHAR_BIT);
+ }
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list