aboutsummaryrefslogtreecommitdiff
path: root/libexec/ftpd
Commit message (Collapse)AuthorAgeFilesLines
* Add some consistency checks to the signal-related code.Yaroslav Tykhiy2005-02-161-0/+6
| | | | | | | MFC: along with rev. 1.202 Notes: svn path=/head/; revision=141967
* A call to maskurg() makes sense only when a transfer is under way,Yaroslav Tykhiy2005-02-161-3/+5
| | | | | | | | | | the function will emit an annoying log message otherwise. Reported by: kris MFC: along with rev. 1.202 Notes: svn path=/head/; revision=141966
* Fix most cases where the address of an int is passed to a function expecting aStefan Farfeleder2005-02-141-5/+8
| | | | | | | socklen_t * argument. Notes: svn path=/head/; revision=141918
* Respect the `logging' flag.Yaroslav Tykhiy2005-01-191-1/+1
| | | | | | | | Pointed out by: Nick Leuta MFC after: 3 days Notes: svn path=/head/; revision=140473
* Improve handling SIGURG and OOB commands on the control channel.Yaroslav Tykhiy2005-01-191-134/+269
| | | | | | | | | | | | | | | | | | | | | | | | | | | The major change is to process STAT sent as an OOB command w/o breaking the current data transfer. As a side effect, this gives better error checking in the code performing data transfers. A lesser, but in no way cosmetic, change is using the flag `recvurg' in the only signal-safe way that has been blessed by SUSv3. The other flag, `transflag,' becomes private to the SIGURG machinery, serves debugging purposes only, and may be dropped in the future. The `byte_count' global variable is now accounting bytes actually transferred over the network. This can give status messages looking strange, like "X of Y bytes transferred," where X > Y, but that has more sense than trying to compensate for combinations of data formats on the server and client when transferring ASCII type data. BTW, getting the size of a file in advance is unreliable for a number of reasons in the first place. See question 18.8 of the Infrequently Asked Questions in comp.lang.c for details. PR: bin/52072 Tested by: Nick Leuta (earlier versions), a stress-testing tool (final) MFC after: 1 month Notes: svn path=/head/; revision=140472
* Sort sections.Ruslan Ermilov2005-01-181-6/+6
| | | | Notes: svn path=/head/; revision=140414
* Replace err(3) calls when in daemon mode by syslog(3), too.Yaroslav Tykhiy2005-01-101-4/+8
| | | | | | | | | | A daemon has no stderr to send its complains to. Pointed out by: Nick Leuta MFC after: 1 week Notes: svn path=/head/; revision=139981
* NOPAM -> NO_PAMRuslan Ermilov2004-12-211-1/+1
| | | | Notes: svn path=/head/; revision=139126
* Do a small style(9) fix before I'm hacking the code itself.Yaroslav Tykhiy2004-12-161-1/+0
| | | | Notes: svn path=/head/; revision=138911
* free(3) is void already.Yaroslav Tykhiy2004-12-161-1/+1
| | | | Notes: svn path=/head/; revision=138910
* Never emit a message to stderr: use syslog instead.Yaroslav Tykhiy2004-12-121-9/+15
| | | | | | | | | | | | | When in inetd mode, this prevents bogus messages from appearing on the control channel. When running as a daemon, we shouldn't write to the terminal we used to have at all. PR: bin/74823 MFC after: 1 week Notes: svn path=/head/; revision=138747
* When looking for a virtual host to handle the connection,Yaroslav Tykhiy2004-11-221-2/+3
| | | | | | | | | stop the search on the first match for efficiency. Submitted by: Nick Leuta Notes: svn path=/head/; revision=137987
* Calling pam_chauthtok() isn't really needed sinceYaroslav Tykhiy2004-11-221-7/+3
| | | | | | | | | an FTP user has no chance to change password anyway. Submitted by: Nick Leuta Notes: svn path=/head/; revision=137986
* Don't log the chroot dir on every command since it's constant for a session.Yaroslav Tykhiy2004-11-221-9/+8
| | | | | | | | | | Log it once at the beginning of the session instead. OTOH, log wd each time for the sake of better auditing and consistent log format. Proposed by: Nick Leuta <skynick -at- mail.sc.ru> Notes: svn path=/head/; revision=137985
* Always log remote IP.Yaroslav Tykhiy2004-11-221-13/+9
| | | | | | | PR: bin/59773 Notes: svn path=/head/; revision=137984
* Treat host name buffers consistently.Yaroslav Tykhiy2004-11-221-12/+23
| | | | Notes: svn path=/head/; revision=137983
* Make chrootdir global and use it in log messagesYaroslav Tykhiy2004-11-181-9/+4
| | | | | | | | | regarding restricted users. MFC after: 2 weeks Notes: svn path=/head/; revision=137862
* Nitpicking on style(9) and whitespace.Yaroslav Tykhiy2004-11-181-13/+13
| | | | | | | Tested with: md5(1) Notes: svn path=/head/; revision=137861
* Use __FBSDID.Yaroslav Tykhiy2004-11-184-8/+12
| | | | Notes: svn path=/head/; revision=137859
* Don't say, "file: permission denied," if the operationYaroslav Tykhiy2004-11-181-1/+1
| | | | | | | is disabled entirely. Notes: svn path=/head/; revision=137853
* Use uniform punctuation, capitalization, and language styleYaroslav Tykhiy2004-11-182-45/+44
| | | | | | | | in server messages wherever this doesn't contradict to a particular message format. Notes: svn path=/head/; revision=137852
* Apply __printflike() to the appendf() prototype so the compilerYaroslav Tykhiy2004-11-181-1/+1
| | | | | | | can detect format errors. Notes: svn path=/head/; revision=137851
* Fix perror_reply() vs. reply() usage.Yaroslav Tykhiy2004-11-182-3/+3
| | | | Notes: svn path=/head/; revision=137850
* '\n' needs not to appear in reply() strings.Yaroslav Tykhiy2004-11-181-3/+3
| | | | Notes: svn path=/head/; revision=137849
* Log pathname arguments to ftp commands as the user specified them;Yaroslav Tykhiy2004-11-181-33/+55
| | | | | | | | | | | | | | add the working directory pathname to the log message if any of such arguments isn't absolute. This has advantage over the old way of logging that an admin can see what users are actually trying to do, and where. The old code was also not too robust when it came to a chrooted session and an absolute pathname. Pointed out by: Nick Leuta MFC after: 2 weeks Notes: svn path=/head/; revision=137848
* Use S_ISDIR() macro instead of a hand-rolled test.Yaroslav Tykhiy2004-11-181-1/+1
| | | | Notes: svn path=/head/; revision=137847
* getcwd() won't leave a error string in the buffer, unlike getwd().Yaroslav Tykhiy2004-11-181-1/+1
| | | | Notes: svn path=/head/; revision=137839
* Use POSIX functions instead of legacy ones:Yaroslav Tykhiy2004-11-171-2/+2
| | | | | | | | getwd() -> getcwd() wait3() -> waitpid() Notes: svn path=/head/; revision=137830
* Kill more unneeded casts found.Yaroslav Tykhiy2004-11-172-4/+4
| | | | | | | Noticed by: Nick Leuta <skynick -at- mail.sc.ru> (some of them) Notes: svn path=/head/; revision=137811
* Don't invent ways of capitalization orthogonal to the English grammar.Yaroslav Tykhiy2004-11-151-2/+2
| | | | Notes: svn path=/head/; revision=137729
* RFC 959 states that the following codes should be usedYaroslav Tykhiy2004-11-151-3/+5
| | | | | | | | | | | | | for status replies on file system objects: 212 Directory status. 213 File status. Reported by: Oleg Koreshkov <okor -at- zone.salut.ru> MFC after: 1 week Notes: svn path=/head/; revision=137728
* Using off_t to pass a block size is obvious overkill.Yaroslav Tykhiy2004-11-131-2/+2
| | | | | | | | | | The size_t type is better suited for that, particularly because the "blksize" argument is to be passed to malloc() and read(). On 64-bit archs it's more to a style issue, but the good style of coding in C is also important. Notes: svn path=/head/; revision=137660
* Kill ancient casts to integral types left from the K&R era.Yaroslav Tykhiy2004-11-133-9/+9
| | | | | | | They're unneeded and sometimes erroneous now. Notes: svn path=/head/; revision=137659
* Fix logxfer() by using realpath(3) instead of playing with getwd(3).Yaroslav Tykhiy2004-11-031-4/+8
| | | | | | | | | | | Previously logxfer() used to record bogus pathnames to the log in some cases, namely, when cwd was / or "name" was absolute. Noticed by: Nick Leuta MFC after: 2 weeks Notes: svn path=/head/; revision=137145
* Replace the last occurence of (long long) and %qd withYaroslav Tykhiy2004-11-021-2/+2
| | | | | | | | | | (intmax_t) and %jd, which is the right way to printf an off_t in the presence of <stdint.h>. Submitted by: Nick Leuta Notes: svn path=/head/; revision=137132
* OpenPAM allows passing a NULL "pamh" to pam_strerror() to indicateYaroslav Tykhiy2004-11-011-2/+5
| | | | | | | | | | | | that the creation of a PAM context has failed. N.B. This does not apply to pam_strerror() in RELENG_4, it will mishandle a NULL "pamh". Discussed with: des Notes: svn path=/head/; revision=137108
* - Stop shadowing global "pamh" by a local variable in auth_pam().Yaroslav Tykhiy2004-10-301-9/+15
| | | | | | | | | | | | - Stop calling pam_strerror() with NULL pamh. - Add a missing call to pam_end(). PR: bin/59776 Submitted by: Nick Leuta <see PR for email> MFC after: 2 weeks Notes: svn path=/head/; revision=137078
* Describe the semantics of the sgetpwnam() helper functionYaroslav Tykhiy2004-10-301-0/+3
| | | | | | | | in the comment above it so that nobody will save pointers returned inside "struct passwd" across the calls to the function. Notes: svn path=/head/; revision=137076
* Log the actual number of bytes sent on the wire to /var/log/ftpdYaroslav Tykhiy2004-10-241-2/+2
| | | | | | | | | | | | | instead of the disk size of the file sent. Since the log file is intended to provide data for anonymous ftp traffic accounting, the disk size of the file isn't really informative in this case. PR: bin/72687 Submitted by: Oleg Koreshkov MFC after: 1 week Notes: svn path=/head/; revision=136929
* We must not fall back to the old way (read-write)Yaroslav Tykhiy2004-10-151-1/+1
| | | | | | | | | | | if sendfile() transferred some data before throwing a error condition because sendfile() won't move the file offset for read() to start from. MFC after: 2 weeks Notes: svn path=/head/; revision=136556
* Clean-up around sendfile(): drop an excessive check for error condition.Yaroslav Tykhiy2004-10-151-2/+2
| | | | Notes: svn path=/head/; revision=136555
* Account for the fact that sendfile(2) may hit the end of fileYaroslav Tykhiy2004-10-151-1/+12
| | | | | | | | | | | prematurely, e.g., if the file has been truncated by someone else. PR: bin/72649 Submitted by: Oleg Koreshkov (portions) MFC after: 2 weeks Notes: svn path=/head/; revision=136554
* Indent.Maxim Konovalov2004-09-241-7/+7
| | | | Notes: svn path=/head/; revision=135738
* o Merge rev. 1.5 libexec/ftpd/ftpd.c from DragonflyBSD:Maxim Konovalov2004-09-241-0/+2
| | | | | | | | | | | | | | | Do not unconditionally fork() after accept(). accept() can return -1 due to an interrupted system call (i.e. SIGCHLD). If we fork in that case ftpd can get into an accept()/SIGCHLD/fork/[fail]/repeat loop. Reported-by: fabian <fabian.duelli@bluewin.ch> Obtained from: DragonflyBSD MFC after: 1 month Notes: svn path=/head/; revision=135737
* ftpd(8) seems to be WARNS=2 clean now.Yaroslav Tykhiy2004-07-311-0/+1
| | | | | | | Tested on: i386, ia64, amd64, sparc64, alpha Notes: svn path=/head/; revision=132932
* Change ``(foo *)0'' to ``NULL'' where it's possibleYaroslav Tykhiy2004-07-312-11/+11
| | | | | | | | | | (and it appears possible throughout ftpd(8) source.) It is not a mere issue of style: Null pointers in C seem to have been mistaken one way or another quite often. Notes: svn path=/head/; revision=132931
* Kill a small herd of casts to off_t where they were not needed.Yaroslav Tykhiy2004-07-312-10/+9
| | | | | | | | | Thank Fortune, the C compiler can figure out by itself the proper conversion for assignments, comparisons, and prototyped function arguments. Notes: svn path=/head/; revision=132930
* Printf(3) off_t values through conversion to intmax_t sinceYaroslav Tykhiy2004-07-312-10/+15
| | | | | | | we've got <stdint.h> et al now. (This makes ftpd(8) WARNS=2 clean.) Notes: svn path=/head/; revision=132929
* Kill an unused variable (heading to WARNS=2.)Yaroslav Tykhiy2004-07-311-1/+0
| | | | Notes: svn path=/head/; revision=132926
* Convert a couple of bogus null statements to the right form.Yaroslav Tykhiy2004-07-311-2/+2
| | | | | | | (Heading to WARNS=2.) Notes: svn path=/head/; revision=132925