SCOUG-Programming Mailing List Archives
Return to [ 12 |
June |
1998 ]
Content Type: text/plain
I have reviewed RFC 959, "FILE TRANSFER PROTOCOL (FTP)". Of note:
- The Telnet end-of-line code of CR LF is the default value, unless
another value is negotiated (section 4.1.3).
- The BS character is specifically allowed in FTP commands (section
5.3.2), except within the command word ("command code") itself (section
5.3). In fact, all ASCII characters except for CR and LF are allowed;
this includes not only BS but VT, BEL, FF, RUBOUT etc.
Therefore,
> And all of the funky variations on the end of line
> character have been negotiated before GetLine() is called.
Correct, although RFC 959 does not state what recv() sees if another
value is negotiated (a point not worth pursuing for this project). And,
as previously discussed, multiple command lines could still be returned
with one GetLine() call unless GetLine() scans the newly received
characters.
> In a nutshell, GetLine() doesn't have
> to edit the input string as it comes in. If the data read by recv() has
> a backspace, then that character really is a part of the data that the
> PI has to parse.
We agree that BS, and by extension any control character (other than CR
or LF), should be handled. Handling them immediately in GetLine() seems
more natural, but then they are not available as argument characters in
username, password, account-information or pathname (the four arguments
where they would be allowed as per RFC 959 section 5.3.2).
In particular, I am aware of passwords with embedded BEL characters;
thus, a robust implementation mandates these control characters being
passed transparently through GetLine().
To properly implement RFC 959 section 5.3.2, any BS or other control
character should be incorporated into the argument string and handled by
the appropriate routine called for by the initial command word ("command
code").
The special meaning associated with BS ("delete me and the character
just before me") is an implementation issue, since the BS character
could conceivably be a part of, for example, a password. This issue is
not addressed by RFC 959. If BS were not allowed in command arguments,
it could (and arguably should) be processed in GetLine().
- Peter Skye
=====================================================
To unsubscribe from this list, send an email message
to "steward@scoug.com". In the body of the message,
put the command "unsubscribe scoug-programming".
For problems, contact the list owner at
"rollin@scoug.com".
=====================================================
Return to [ 12 |
June |
1998 ]
The Southern California OS/2 User Group
P.O. Box 26904
Santa Ana, CA 92799-6904, USA
Copyright 2001 the Southern California OS/2 User Group. ALL RIGHTS
RESERVED.
SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group.
OS/2, Workplace Shell, and IBM are registered trademarks of International
Business Machines Corporation.
All other trademarks remain the property of their respective owners.
|