summaryrefslogtreecommitdiff
path: root/usr.bin/ftp
AgeCommit message (Collapse)Author
2023-07-02Fix HTTPS through Proxy.mlelstv
While a regular HTTP Proxy, requires the absolute URL with protocol and host part, yyou must only send the relative URL through a CONNECT tunnel (you are talking to the target server).
2023-06-03bsd.own.mk: rename GCC_NO_* to CC_WNO_*lukem
Rename compiler-warning-disable variables from GCC_NO_warning to CC_WNO_warning where warning is the full warning name as used by the compiler. GCC_NO_IMPLICIT_FALLTHRU is CC_WNO_IMPLICIT_FALLTHROUGH Using the convention CC_compilerflag, where compilerflag is based on the full compiler flag name.
2023-05-16ftp 20230516 for openssl 3.0 compat SSL_OP_IGNORE_UNEXPECTED_EOFlukem
2023-05-16Ignore EOF from remote.christos
2023-05-05add timeout for ssl connectlukem
Implement a timeout for SSL connection setup, using -q QUITTIME, defaulting to 60 seconds. SSL_connect(3) (unlike connect(2)) doesn't timeout by default. Adapt ssl error messages destination: if unexpected error from local API, use warn()/warnx() to stderr; if expected error from a network operation (e.g., timeouts), use fprintf to ttyout (which might be stdout). Consistently use ftp_poll() instead of select(); ssl.c (using select()) was added 7 years after the previous uses of select() were converted to poll(). Check EAGAIN as well as existing EINTR error from ftp_poll(), for portability.
2023-04-09Simplify includeslukem
Include "ftp_var.h" instead of various system headers and "extern.h".
2023-02-25ftp(1): better mark up for url vs cd exampleuwe
2023-02-25ftp(1): minor markup tweaksuwe
Use .Ql instead of .Sq Li, add some missing ones. Use .Pq instead of explicit () for longer phrases - these are easier to read in the postscript output b/c of extra spacing.
2023-02-25Add option sslnoverify to control validation of SSL certificates.mlelstv
Add netrc processing to fetch-mode (URL on command line) to enable options and autologin via netrc. Fix SSL cleanup in some error paths. Certificate validation is now enabled by default. Set FTPSSLNOVERIFY=1 in environment or configure a corresponding init macro via netrc to not validate certs (required if you haven't installed a required CA certificate for OpenSSL). Discussed with lukem@ on icb.
2023-01-20s/bninary/binary/ in comment.andvar
2022-09-22update ftp version to 20220911lukem
PR/57003: Handle relative URLs (patch by kim@)
2022-09-12Disable verification for now until we implement installation of trust anchors.christos
2022-09-11PR/57003: Handle relative URLs (patch by kim@)christos
2022-08-30Add cert verification, together with an environment variable "NO_CERT_VERIFY",christos
to turn it off.
2022-08-06s/blity/bility/ in various words, mainly in comments.andvar
2021-10-09ftp: fix -? more portablylukem
Start the optstring with ":" (which implicitly disables opterr), and handle '?' with optopt=='?' separately to ':'. Fixes -? display of full usage on other platforms.
2021-09-10usr.bin: remove unnecessary lint comment CONSTCONDrillig
Since 2021-01-31, lint no longer warns about 'do ... while (0)'. No functional change.
2021-08-27ftp: fix undefined behavior when parsing FEATrillig
lint says: warning: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'int' [342]
2021-08-26update ftp version to 20210826lukem
Version bump for PASV/LPSV address validation
2021-08-26ftp: remove unnecessary variable assignmentslukem
Remove assignment to error in initconn(); it's not tested anywhere after the initial use, so no need to set it before goto bad. (Looks like copypasta from the initial addition of the code in rev 1.48.)
2021-08-26ftp: validate address from PASV and LPSV responselukem
Fail if the server's response to PASV or LPSV contains an IP address that doesn't match that of the control connection. (EPSV already only uses the port portion of the server's response, per RFC 2428). Previously a hostile server could cause ftp to open a data connection elsewhere. Many other ftp implementations have had a similar change for many years, including those in popular browsers (before they deprecated FTP ...) Thanks to Simon Josefsson notifying me about https://lists.gnu.org/archive/html/bug-inetutils/2021-06/msg00002.html
2021-08-01fix typos in word "otherwise".andvar
2021-07-06Use raw write(2) instead of fwrite(3) to avoid stream corruption becausechristos
of the progress bar interrupts. From RVP.
2021-06-03use fetch_*() for I/O with SMALLPROG / !WITH_SSL buildslukem
Adapt the SMALLPROG / -UWITH_SSL build to also use the fetch_*() methods from ssl.c, instead of using stdio, as stdio isn't robust when using interruptable signals. Disable ssl-specific support in the fetch_*() methods if WITH_SSL isn't defined, so SMALLPROG still doesn't have ssl support (as expected). The resulting SMALLPROG binary is slightly larger than before (e.g., 157KiB vs 153KiB on amd64). Set version to 20210603 for this fix and the SO_KEEPALIVE fix for PR 56129. PR install/56219
2021-06-03set SO_KEEPALIVE on control connectionlukem
Attempt to prevent timeouts of the control connection by setting SO_KEEPALIVE. This matches the equivalent behaviour in ftpd. Note: This is a much simpler change than adding a background polling event to invoke "STAT" (or "NOOP") on the control connection during a transfer. (It's unclear from RFC 959 whether "NOOP" is even permitted during a transfer). PR bin/56129
2021-04-25ftp(1): consistently use FTP for protocol use.lukem
2021-04-25ftp(1): consistent Ic (not Nm) for commandslukem
2021-04-25better XXX comment for buggy ftp serverlukem
2021-01-31ftp(1): more $https_proxy documentationlukem
Document $https_proxy in ENVIRONMENT. (It was already documented elsewhere). Fixes PR bin/51883
2021-01-06ftp(1): fix description of "debug"lukem
"debug" command and documentation got accidentally renamed to "ftp_debug" 13 years ago, and was only partially fixed.
2021-01-06ftp: don't use restartable signalslukem
Refactor to not rely upon restartable signals (SA_RESTART), possibly fixing intermittent failures with -q QUITTIME. ftp transfers: handle EINTR/EAGAIN in copy_bytes(), instead of relying upon restartable signals. http/https transfers: Explicitly print an error similar to progressmeter() when timing-out for -Q QUITTIME in fetch_wait(), and set errno to ETIMEDOUT so that the warn() in fetch_url() prints a more accurate error message. PR/55857
2020-09-06add support for new GCC 9 warnings that may be too much to fixmrg
right now. new address-of-packed-member and format-overflow warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd GCC_NO_FORMAT_OVERFLOW variables to remove these warnings. apply to a bunch of the tree. mostly, these are real bugs that should be fixed, but in many cases, only by removing the 'packed' attribute from some structure that doesn't really need it. (i looked at many different ones, and while perhaps 60-80% were already properly aligned, it wasn't clear to me that the uses were always coming from sane data vs network alignment, so it doesn't seem safe to remove packed without careful research for each affect struct.) clang already warned (and was not erroring) for many of these cases, but gcc picked up dozens more.
2020-07-18ftp: add -? for help. improve synopsislukem
Add -? to display usage synopsis and help to stdout. This allows for "ftp -? | less", which is more user friendly. Errors still show usage to stderr. Consistency improvements in some usage text.
2020-07-15Try to improve markup for better PostScript output.uwe
2020-07-15Do not use "[...]", just "..." is enough.uwe
Conventionally the ellipsis already expresses optional repetition, e.g. .Ar without arguments produces "file ...".
2020-07-15Remove now-extraneous Op since we already have Oo and Oc to enclosepgoyette
the Ar port.
2020-07-15ftp.1: don't wrap "[[user@]host [port]]"lukem
2020-07-13ftp(1): consistency tweakslukem
2020-07-11ftp.c: improve signal handler restorationlukem
Only invoke the old signal handler if it's a real signal handler and not SIG_IGN, SIG_DFL, SIG_HOLD, or SIG_ERR, using new static function issighandler(). Avoids an intermittent race condition with a null pointer dereference via (*SIG_DFL)(). Bug class reported by Joyu Liao from Juniper Networks. Use SIG_ERR instead of NULL as the indicator that a signal handler hasn't been changed, so that SIG_DFL (equivalent to NULL) will be restored.
2020-07-11fetch_url: improve signal handler restorationlukem
Use SIG_ERR not NULL as the indicator that a signal handler hasn't been changed, so that SIG_DFL (equivalent to NULL) will be restored. Fix restoration of SIGQUIT; use the old handler not SIGPIPE's.
2020-06-08ftp: exit if lostpeer invoked by a signallukem
lostpeer() calls too many async-unsafe functions (both directly and indirectly) to close and cleanup the remote connections, so just exit after the cleanup if invoked by a signal. Reported in private mail by Qi Hou. May also resolve a crash reported by Thomas Klausner.
2020-02-26update ftp version to 20190622lukem
2019-06-22trim down error checking if we are small.christos
2019-06-22make this compile again with -DNO_PROGRESSchristos
2019-04-07redo the connection waiting handling to make it more clear.christos
2019-04-04Make fetch_read() return size_t like fread() does. It is bogus tochristos
have one backing implementation that returns different values and types than the other. Handle error setting properly; i.e. bail out if the internal read returned an error. Now we get a proper error message when the the server resets our connection instead of a warning that the right failed with an invalid argument. The server used for testing was: http://capeweather.dyndns.org:8080/graphs/3474.png Which seems to be unreliable :-)
2019-02-06Try to avoid a (bogus) fatal warning from clang.martin
2019-02-04- add justquit() that always exits. use it to avoid unreachable code.mrg
2019-02-03- add or adjust /* FALLTHROUGH */ where appropriatemrg
- add __unreachable() after functions that can return but won't in this case, and thus can't be marked __dead easily
2019-01-28PR/53916: Rob Gill: remove redundant assignment to matchlen.christos