]> git.sesse.net Git - betaftpd/blob - doc/RFC-COMPLIANCE
Fixed a security problem where the custom snprintf() would always be used. Thanks...
[betaftpd] / doc / RFC-COMPLIANCE
1 BetaFTPD is now becoming more and more mature, with almost full RFC compliance.
2 The few small things that it lacks (see below) are simply not a problem, so for
3 all practical uses, BetaFTPD should be considered RFC959- and RFC1123-
4 compliant.
5
6 ---
7
8 These commands are believed to be fully compliant with RFC959 and RFC1123:
9 PORT, PASV, USER, PASS, CWD, CDUP, QUIT, DELE, PWD, SYST, NOOP, STOR, APPE,
10 ABOR, RNFR, RNTO, MKD, RMD, ALLO, REIN, ACCT, HELP, STAT and MODE.
11
12 These commands are not implemented at all: SMNT, STOU and SITE.
13
14 The rest of the commands are implemented, but have minor quirks or
15 problems -- see below.
16
17 Telnet signals are ignored, to the best of my knowledge. BetaFTPD does not
18 speak Telnet, although RFC959 seems to require it. Note that you can still
19 use Telnet to connect to the FTP port (to do a manual debugging session,
20 e.a.) and speak raw FTP, but BetaFTPD does not follow _all_ the rules about,
21 say, Telnet IP and Synch signals, and it doesn't refuse Telnet commands,
22 like RFC1123 requires. The reason for this is that I don't see how this
23 could be a problem in today's FTP world, and an implementation of this would
24 thus be considered as plure bloat.
25
26 TYPE:
27 The TYPE command is included, but it ignores its argument and always uses
28 binary mode. RFC959 violation, but RFC1123 excuses the missing ASCII mode.
29 (If you enable ASCII mode (--enable-ascii to configure), it's RFC959- and
30 RFC1123-compliant.)
31
32 STRU:
33 The STRU command is included, but only file structure is supported (all other
34 modes are refused; if you really need record structure, mail me; when I'm done
35 laughing, I will consider implementing it). RFC959 violation, but RFC1123
36 excuses the missing record structure.
37
38 LIST/NLST:
39 The LIST and NLST commands ignore some flags (like `-1') given to them. (This
40 is much better than it was before, though, even recursive listings should work
41 now.) The RFCs say nothing about directory listing formats anyway, but I guess
42 this is a violation of GNU ls :-)
43
44 REST:
45 The REST command is implemented, but it doesn't check that its argument really
46 is an integer. REST does not work in ASCII mode.
47
48 SIZE:
49 The SIZE command (not in any RFC at the moment) does not work in ASCII mode.
50 This is in compliance with the ftpext documents. If we were to enable it in
51 ASCII mode, a possible attacker could just enable ASCII mode, do a SIZE on a
52 big file and thus effectively halt a server for a shorter or longer period of
53 time.