Module Name: src
Committed By: martin
Date: Mon Dec 2 10:19:39 UTC 2024
Modified Files:
src/usr.bin/ftp [netbsd-10]: cmds.c extern.h fetch.c ftp.1 ftp.c main.c
progressbar.c ruserpass.c util.c version.h
Log Message:
Pull up following revision(s) (requested by lukem in ticket #1021):
usr.bin/ftp/ftp.c: revision 1.178
usr.bin/ftp/version.h: revision 1.99
usr.bin/ftp/ruserpass.c: revision 1.35
usr.bin/ftp/main.c: revision 1.134
usr.bin/ftp/main.c: revision 1.135
usr.bin/ftp/progressbar.c: revision 1.27
usr.bin/ftp/util.c: revision 1.165
usr.bin/ftp/cmds.c: revision 1.144
usr.bin/ftp/extern.h: revision 1.84
usr.bin/ftp/fetch.c: revision 1.242
usr.bin/ftp/ftp.1: revision 1.160
s/bninary/binary/ in comment.
extract duplicate code into a function.
Check bounds when copying to destination.
Remove const where the const string ended up being overwritten.
use unsigned when doing shifts.
remove const when string gets overwritten.
ftp: exit non-zero if short http transfer when filesize is known
If a http file size is known and the fetch finishes with less bytes
transferred, exit non-zero.
Bump version to 20241129.
PR bin/54713
PR bin/58281
ftp: help improvements
Document -? as a separate mode.
Document -H HEADER in the usage.
Clarify units for -b and -x.
Consistent argument names between ftp -? and ftp(1).
ftp: order getopt Upper before lower
Consistently order options in getopt and the switch
with the upper case option before the lower case option.
This makes it easier to cross-reference with -? and ftp(1).
No functional change.
To generate a diff of this commit:
cvs rdiff -u -r1.141.6.1 -r1.141.6.2 src/usr.bin/ftp/cmds.c
cvs rdiff -u -r1.82.10.1 -r1.82.10.2 src/usr.bin/ftp/extern.h
cvs rdiff -u -r1.235.2.3 -r1.235.2.4 src/usr.bin/ftp/fetch.c
cvs rdiff -u -r1.147.2.6 -r1.147.2.7 src/usr.bin/ftp/ftp.1
cvs rdiff -u -r1.174.2.2 -r1.174.2.3 src/usr.bin/ftp/ftp.c
cvs rdiff -u -r1.128.2.2 -r1.128.2.3 src/usr.bin/ftp/main.c
cvs rdiff -u -r1.24.6.1 -r1.24.6.2 src/usr.bin/ftp/progressbar.c
cvs rdiff -u -r1.33.86.1 -r1.33.86.2 src/usr.bin/ftp/ruserpass.c
cvs rdiff -u -r1.164.2.3 -r1.164.2.4 src/usr.bin/ftp/util.c
cvs rdiff -u -r1.95.2.2 -r1.95.2.3 src/usr.bin/ftp/version.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/ftp/cmds.c
diff -u src/usr.bin/ftp/cmds.c:1.141.6.1 src/usr.bin/ftp/cmds.c:1.141.6.2
--- src/usr.bin/ftp/cmds.c:1.141.6.1 Sun Oct 13 16:06:36 2024
+++ src/usr.bin/ftp/cmds.c Mon Dec 2 10:19:39 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: cmds.c,v 1.141.6.1 2024/10/13 16:06:36 martin Exp $ */
+/* $NetBSD: cmds.c,v 1.141.6.2 2024/12/02 10:19:39 martin Exp $ */
/*-
* Copyright (c) 1996-2021 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
#if 0
static char sccsid[] = "@(#)cmds.c 8.6 (Berkeley) 10/9/94";
#else
-__RCSID("$NetBSD: cmds.c,v 1.141.6.1 2024/10/13 16:06:36 martin Exp $");
+__RCSID("$NetBSD: cmds.c,v 1.141.6.2 2024/12/02 10:19:39 martin Exp $");
#endif
#endif /* not lint */
@@ -147,10 +147,10 @@ __dead static void mintr(int);
static void mabort(const char *);
static void set_type(const char *);
-static const char *doprocess(char *, size_t, const char *, int, int, int);
-static const char *domap(char *, size_t, const char *);
-static const char *docase(char *, size_t, const char *);
-static const char *dotrans(char *, size_t, const char *);
+static char *doprocess(char *, size_t, char *, int, int, int);
+static char *domap(char *, size_t, const char *);
+static char *docase(char *, size_t, const char *);
+static char *dotrans(char *, size_t, const char *);
/*
* Confirm if "cmd" is to be performed upon "file".
@@ -407,7 +407,7 @@ put(int argc, char *argv[])
const char *cmd;
int loc = 0;
char *locfile;
- const char *remfile;
+ char *remfile;
if (argc == 2) {
argc++;
@@ -437,8 +437,8 @@ put(int argc, char *argv[])
free(locfile);
}
-static const char *
-doprocess(char *dst, size_t dlen, const char *src,
+static char *
+doprocess(char *dst, size_t dlen, char *src,
int casef, int transf, int mapf)
{
if (casef)
@@ -576,8 +576,7 @@ int
getit(int argc, char *argv[], int restartit, const char *gmode)
{
int loc, rval;
- char *remfile, *olocfile;
- const char *locfile;
+ char *remfile, *olocfile, *locfile;
char buf[MAXPATHLEN];
loc = rval = 0;
@@ -684,8 +683,7 @@ mget(int argc, char *argv[])
{
sigfunc oldintr;
int ointer;
- char *cp;
- const char *tp;
+ char *cp, *tp;
int volatile restartit;
if (argc == 0 ||
@@ -1290,13 +1288,11 @@ void
ls(int argc, char *argv[])
{
const char *cmd;
- char *remdir, *locbuf;
- const char *locfile;
+ char *remdir, *locbuf, *locfile;
int pagecmd, mlsdcmd;
remdir = NULL;
locbuf = NULL;
- locfile = "-";
pagecmd = mlsdcmd = 0;
/*
* the only commands that start with `p' are
@@ -1326,6 +1322,8 @@ ls(int argc, char *argv[])
remdir = argv[1];
if (argc > 2)
locfile = argv[2];
+ else
+ locfile = locbuf = ftp_strdup("-");
if (argc > 3 || ((pagecmd | mlsdcmd) && argc > 2)) {
usage:
if (pagecmd || mlsdcmd)
@@ -1345,11 +1343,12 @@ ls(int argc, char *argv[])
if (EMPTYSTRING(p))
p = DEFAULTPAGER;
len = strlen(p) + 2;
+ free(locbuf);
locbuf = ftp_malloc(len);
locbuf[0] = '|';
(void)strlcpy(locbuf + 1, p, len - 1);
locfile = locbuf;
- } else if ((strcmp(locfile, "-") != 0) && *locfile != '|') {
+ } else if (locfile != locbuf) {
if ((locbuf = globulize(locfile)) == NULL ||
!confirm("output to local-file:", locbuf)) {
code = -1;
@@ -1920,7 +1919,7 @@ setcase(int argc, char *argv[])
* convert the given name to lower case if it's all upper case, into
* a static buffer which is returned to the caller
*/
-static const char *
+static char *
docase(char *dst, size_t dlen, const char *src)
{
size_t i;
@@ -1973,7 +1972,14 @@ setntrans(int argc, char *argv[])
(void)strlcpy(ntout, argv[2], sizeof(ntout));
}
-static const char *
+#define ADDC(x) \
+ do { \
+ *cp2++ = x; \
+ if (cp2 - dst >= (ptrdiff_t)(dlen - 1)) \
+ goto out; \
+ } while (0)
+
+static char *
dotrans(char *dst, size_t dlen, const char *src)
{
const char *cp1;
@@ -1988,15 +1994,13 @@ dotrans(char *dst, size_t dlen, const ch
if (*cp1 == ntin[i]) {
found++;
if (i < ostop) {
- *cp2++ = ntout[i];
- if (cp2 - dst >= (ptrdiff_t)(dlen - 1))
- goto out;
+ ADDC(ntout[i]);
}
break;
}
}
if (!found) {
- *cp2++ = *cp1;
+ ADDC(*cp1);
}
}
out:
@@ -2037,8 +2041,8 @@ setnmap(int argc, char *argv[])
(void)strlcpy(mapout, cp, MAXPATHLEN);
}
-static const char *
-domap(char *dst, size_t dlen __unused, const char *src)
+static char *
+domap(char *dst, size_t dlen, const char *src)
{
const char *cp1 = src;
char *cp2 = mapin;
@@ -2093,7 +2097,7 @@ domap(char *dst, size_t dlen __unused, c
switch (*cp1) {
case '\\':
if (*(cp1 + 1)) {
- *cp2++ = *++cp1;
+ ADDC(*++cp1);
}
break;
case '[':
@@ -2104,7 +2108,7 @@ LOOP:
const char *cp3 = src;
while (*cp3) {
- *cp2++ = *cp3++;
+ ADDC(*cp3++);
}
match = 1;
}
@@ -2112,7 +2116,7 @@ LOOP:
const char *cp3 = tp[toknum];
while (cp3 != te[toknum]) {
- *cp2++ = *cp3++;
+ ADDC(*cp3++);
}
match = 1;
}
@@ -2129,7 +2133,7 @@ LOOP:
const char *cp3 = src;
while (*cp3) {
- *cp2++ = *cp3++;
+ ADDC(*cp3++);
}
}
else if (toks[toknum =
@@ -2138,19 +2142,16 @@ LOOP:
while (cp3 !=
te[toknum]) {
- *cp2++ = *cp3++;
+ ADDC(*cp3++);
}
}
}
else if (*cp1) {
- *cp2++ = *cp1++;
+ ADDC(*cp1++);
}
}
if (!*cp1) {
- fputs(
- "nmap: unbalanced brackets.\n",
- ttyout);
- return (src);
+ goto unbalanced;
}
match = 1;
cp1--;
@@ -2162,10 +2163,7 @@ LOOP:
}
}
if (!*cp1) {
- fputs(
- "nmap: unbalanced brackets.\n",
- ttyout);
- return (src);
+ goto unbalanced;
}
break;
}
@@ -2185,27 +2183,34 @@ LOOP:
const char *cp3 = src;
while (*cp3) {
- *cp2++ = *cp3++;
+ ADDC(*cp3++);
}
}
else if (toks[toknum = *cp1 - '1']) {
const char *cp3 = tp[toknum];
while (cp3 != te[toknum]) {
- *cp2++ = *cp3++;
+ ADDC(*cp3++);
}
}
break;
}
/* FALLTHROUGH */
default:
- *cp2++ = *cp1;
+ ADDC(*cp1);
break;
}
cp1++;
}
+out:
*cp2 = '\0';
- return *dst ? dst : src;
+ if (!*dst)
+ strlcpy(dst, src, dlen);
+ return dst;
+unbalanced:
+ fputs("nmap: unbalanced brackets.\n", ttyout);
+ *dst = '\0';
+ goto out;
}
void
Index: src/usr.bin/ftp/extern.h
diff -u src/usr.bin/ftp/extern.h:1.82.10.1 src/usr.bin/ftp/extern.h:1.82.10.2
--- src/usr.bin/ftp/extern.h:1.82.10.1 Tue May 16 16:16:00 2023
+++ src/usr.bin/ftp/extern.h Mon Dec 2 10:19:39 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: extern.h,v 1.82.10.1 2023/05/16 16:16:00 martin Exp $ */
+/* $NetBSD: extern.h,v 1.82.10.2 2024/12/02 10:19:39 martin Exp $ */
/*-
* Copyright (c) 1996-2023 The NetBSD Foundation, Inc.
@@ -137,7 +137,7 @@ char *getoptionvalue(const char *);
void getremoteinfo(void);
int getreply(int);
char *globulize(const char *);
-char *gunique(const char *);
+char *gunique(char *);
void help(int, char **);
char *hookup(const char *, const char *);
void idlecmd(int, char **);
@@ -176,7 +176,7 @@ void quit(int, char **);
void justquit(void) __dead;
void quote(int, char **);
void quote1(const char *, int, char **);
-void recvrequest(const char *, const char *, const char *,
+void recvrequest(const char *, char *, const char *,
const char *, int, int);
void reget(int, char **);
char *remglob(char **, int, const char **);
Index: src/usr.bin/ftp/fetch.c
diff -u src/usr.bin/ftp/fetch.c:1.235.2.3 src/usr.bin/ftp/fetch.c:1.235.2.4
--- src/usr.bin/ftp/fetch.c:1.235.2.3 Sun Oct 13 16:06:36 2024
+++ src/usr.bin/ftp/fetch.c Mon Dec 2 10:19:39 2024
@@ -1,7 +1,7 @@
-/* $NetBSD: fetch.c,v 1.235.2.3 2024/10/13 16:06:36 martin Exp $ */
+/* $NetBSD: fetch.c,v 1.235.2.4 2024/12/02 10:19:39 martin Exp $ */
/*-
- * Copyright (c) 1997-2015 The NetBSD Foundation, Inc.
+ * Copyright (c) 1997-2024 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: fetch.c,v 1.235.2.3 2024/10/13 16:06:36 martin Exp $");
+__RCSID("$NetBSD: fetch.c,v 1.235.2.4 2024/12/02 10:19:39 martin Exp $");
#endif /* not lint */
/*
@@ -1861,6 +1861,11 @@ chunkerror:
}
if (bytes > 0)
ptransfer(0);
+
+ /* fail if short transfer when filesize is known */
+ if (filesize >= 0 && (bytes + restart_point < filesize))
+ goto cleanup_fetch_url;
+
bytes = 0;
rval = 0;
Index: src/usr.bin/ftp/ftp.1
diff -u src/usr.bin/ftp/ftp.1:1.147.2.6 src/usr.bin/ftp/ftp.1:1.147.2.7
--- src/usr.bin/ftp/ftp.1:1.147.2.6 Mon Dec 2 09:05:18 2024
+++ src/usr.bin/ftp/ftp.1 Mon Dec 2 10:19:39 2024
@@ -1,4 +1,4 @@
-.\" $NetBSD: ftp.1,v 1.147.2.6 2024/12/02 09:05:18 martin Exp $
+.\" $NetBSD: ftp.1,v 1.147.2.7 2024/12/02 10:19:39 martin Exp $
.\"
.\" Copyright (c) 1996-2024 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -57,7 +57,7 @@
.\"
.\" @(#)ftp.1 8.3 (Berkeley) 10/9/94
.\"
-.Dd September 30, 2024
+.Dd November 29, 2024
.Dt FTP 1
.Os
.Sh NAME
@@ -65,7 +65,7 @@
.Nd Internet file transfer program
.Sh SYNOPSIS
.Nm
-.Op Fl 46AadefginpRtVv\&?
+.Op Fl 46AadefginpRtVv
.Op Fl b Ar bufsize
.Op Fl H Ar header
.Op Fl N Ar netrc
@@ -158,6 +158,8 @@
.Bk -words
.Fl u Ar url Ar
.Ek
+.Nm
+.Fl \&?
.Sh DESCRIPTION
.Nm
is the user interface to the Internet standard File Transfer Protocol.
@@ -205,7 +207,8 @@ Causes
to bypass normal login procedure, and use an anonymous login instead.
.It Fl b Ar bufsize
Change the input buffer size to
-.Ar bufsize .
+.Ar bufsize
+bytes.
The default
.Ar bufsize
is
@@ -300,9 +303,9 @@ Quit if the connection has stalled for
seconds.
.It Fl R
Restart all non-proxied auto-fetches.
-.It Fl r Ar wait
+.It Fl r Ar retry
Retry the connection attempt if it failed, pausing for
-.Ar wait
+.Ar retry
seconds.
.It Fl s Ar srcaddr
Uses
@@ -358,7 +361,8 @@ to show all responses from the remote se
as report on data transfer statistics.
.It Fl x Ar xfersize
Set the size of the socket send and receive buffers to
-.Ar xfersize .
+.Ar xfersize
+bytes.
Refer to
.Ic xferbuf
for more information.
Index: src/usr.bin/ftp/ftp.c
diff -u src/usr.bin/ftp/ftp.c:1.174.2.2 src/usr.bin/ftp/ftp.c:1.174.2.3
--- src/usr.bin/ftp/ftp.c:1.174.2.2 Sun Oct 13 16:06:36 2024
+++ src/usr.bin/ftp/ftp.c Mon Dec 2 10:19:39 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: ftp.c,v 1.174.2.2 2024/10/13 16:06:36 martin Exp $ */
+/* $NetBSD: ftp.c,v 1.174.2.3 2024/12/02 10:19:39 martin Exp $ */
/*-
* Copyright (c) 1996-2021 The NetBSD Foundation, Inc.
@@ -92,7 +92,7 @@
#if 0
static char sccsid[] = "@(#)ftp.c 8.6 (Berkeley) 10/27/94";
#else
-__RCSID("$NetBSD: ftp.c,v 1.174.2.2 2024/10/13 16:06:36 martin Exp $");
+__RCSID("$NetBSD: ftp.c,v 1.174.2.3 2024/12/02 10:19:39 martin Exp $");
#endif
#endif /* not lint */
@@ -925,7 +925,7 @@ sendrequest(const char *cmd, const char
}
void
-recvrequest(const char *cmd, const char *volatile local, const char *remote,
+recvrequest(const char *cmd, char *volatile local, const char *remote,
const char *lmode, int printnames, int ignorespecial)
{
FILE *volatile fout;
@@ -2037,7 +2037,7 @@ reset(int argc, char *argv[])
}
char *
-gunique(const char *local)
+gunique(char *local)
{
static char new[MAXPATHLEN];
char *cp = strrchr(local, '/');
Index: src/usr.bin/ftp/main.c
diff -u src/usr.bin/ftp/main.c:1.128.2.2 src/usr.bin/ftp/main.c:1.128.2.3
--- src/usr.bin/ftp/main.c:1.128.2.2 Sun Oct 13 16:06:36 2024
+++ src/usr.bin/ftp/main.c Mon Dec 2 10:19:39 2024
@@ -1,7 +1,7 @@
-/* $NetBSD: main.c,v 1.128.2.2 2024/10/13 16:06:36 martin Exp $ */
+/* $NetBSD: main.c,v 1.128.2.3 2024/12/02 10:19:39 martin Exp $ */
/*-
- * Copyright (c) 1996-2023 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2024 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -98,7 +98,7 @@ __COPYRIGHT("@(#) Copyright (c) 1985, 19
#if 0
static char sccsid[] = "@(#)main.c 8.6 (Berkeley) 10/9/94";
#else
-__RCSID("$NetBSD: main.c,v 1.128.2.2 2024/10/13 16:06:36 martin Exp $");
+__RCSID("$NetBSD: main.c,v 1.128.2.3 2024/12/02 10:19:39 martin Exp $");
#endif
#endif /* not lint */
@@ -271,7 +271,7 @@ main(int volatile argc, char **volatile
}
SLIST_INIT(&custom_headers);
- while ((ch = getopt(argc, argv, ":46Aab:defgH:inN:o:pP:q:r:Rs:tT:u:vVx:")) != -1) {
+ while ((ch = getopt(argc, argv, ":46Aab:defgH:iN:no:P:pq:Rr:s:T:tu:Vvx:")) != -1) {
switch (ch) {
case '4':
family = AF_INET;
@@ -329,10 +329,6 @@ main(int volatile argc, char **volatile
interactive = 0;
break;
- case 'n':
- autologin = 0;
- break;
-
case 'N':
if (strlcpy(netrc, optarg, sizeof(netrc))
>= sizeof(netrc))
@@ -340,45 +336,45 @@ main(int volatile argc, char **volatile
strerror(ENAMETOOLONG));
break;
+ case 'n':
+ autologin = 0;
+ break;
+
case 'o':
outfile = ftp_strdup(optarg);
if (strcmp(outfile, "-") == 0)
ttyout = stderr;
break;
+ case 'P':
+ ftpport = optarg;
+ break;
+
case 'p':
passivemode = 1;
activefallback = 0;
break;
- case 'P':
- ftpport = optarg;
- break;
-
case 'q':
quit_time = (int)strtol(optarg, &ep, 10);
if (quit_time < 1 || *ep != '\0')
errx(1, "Bad quit value: %s", optarg);
break;
+ case 'R':
+ restartautofetch = 1;
+ break;
+
case 'r':
retry_connect = (int)strtol(optarg, &ep, 10);
if (retry_connect < 1 || *ep != '\0')
errx(1, "Bad retry value: %s", optarg);
break;
- case 'R':
- restartautofetch = 1;
- break;
-
case 's':
src_addr = optarg;
break;
- case 't':
- trace = 1;
- break;
-
case 'T':
{
int targc;
@@ -408,6 +404,10 @@ main(int volatile argc, char **volatile
break;
}
+ case 't':
+ trace = 1;
+ break;
+
case 'u':
{
isupload = 1;
@@ -417,14 +417,14 @@ main(int volatile argc, char **volatile
break;
}
- case 'v':
- progress = verbose = 1;
- break;
-
case 'V':
progress = verbose = 0;
break;
+ case 'v':
+ progress = verbose = 1;
+ break;
+
case 'x':
sndbuf_size = strsuftoi(optarg);
if (sndbuf_size < 1)
@@ -1080,8 +1080,8 @@ synopsis(FILE * stream)
const char * progname = getprogname();
fprintf(stream,
-"usage: %s [-46AadefginpRtVv] [-H HEADER] [-N NETRC] [-o OUTPUT] [-P PORT]\n"
-" [-q QUITTIME] [-r RETRY] [-s SRCADDR] [-T DIR,MAX[,INC]]\n"
+"usage: %s [-46AadefginpRtVv] [-b BUFSIZE] [-H HEADER] [-N NETRC] [-o OUTPUT]\n"
+" [-P PORT] [-q QUITTIME] [-r RETRY] [-s SRCADDR] [-T DIR,MAX[,INC]]\n"
" [-x XFERSIZE]\n"
" [[USER@]HOST [PORT]]\n"
" [[USER@]HOST:[PATH][/]]\n"
@@ -1107,11 +1107,13 @@ usage_help(void)
" -6 Only use IPv6 addresses\n"
" -A Force active mode\n"
" -a Use anonymous login\n"
-" -b BUFLEN Use BUFLEN bytes for fetch buffer\n"
+" -b BUFSIZE Use BUFSIZE bytes for fetch buffer\n"
" -d Enable debugging\n"
" -e Disable command-line editing\n"
" -f Force cache reload for FTP or HTTP proxy transfers\n"
" -g Disable file name globbing\n"
+" -H HEADER Add custom HTTP header HEADER for HTTP transfers;\n"
+" may be repeated for additional headers\n"
" -i Disable interactive prompt during multiple file transfers\n"
" -N NETRC Use NETRC instead of ~/.netrc\n"
" -n Disable auto-login\n"
@@ -1121,15 +1123,15 @@ usage_help(void)
" -q QUITTIME Quit if connection stalls for QUITTIME seconds\n"
" -R Restart non-proxy auto-fetch\n"
" -r RETRY Retry failed connection attempts after RETRY seconds\n"
-" -s SRCADDR Use source address SRCADDR\n"
-" -t Enable packet tracing\n"
+" -s SRCADDR Use IP source address SRCADDR\n"
" -T DIR,MAX[,INC]\n"
-" Set maximum transfer rate for direction DIR to MAX bytes/s,\n"
-" with optional increment INC bytes/s\n"
+" Set maximum transfer rate for direction DIR (all, get, or put)\n"
+" to MAX bytes/s, with optional increment INC bytes/s\n"
+" -t Enable packet tracing\n"
" -u URL URL to upload file arguments to\n"
" -V Disable verbose and progress\n"
" -v Enable verbose and progress\n"
-" -x XFERSIZE Set socket send and receive size to XFERSIZE\n"
+" -x XFERSIZE Set socket send and receive size to XFERSIZE bytes\n"
" -? Display this help and exit\n"
);
#endif
Index: src/usr.bin/ftp/progressbar.c
diff -u src/usr.bin/ftp/progressbar.c:1.24.6.1 src/usr.bin/ftp/progressbar.c:1.24.6.2
--- src/usr.bin/ftp/progressbar.c:1.24.6.1 Sun Oct 13 16:06:36 2024
+++ src/usr.bin/ftp/progressbar.c Mon Dec 2 10:19:39 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: progressbar.c,v 1.24.6.1 2024/10/13 16:06:36 martin Exp $ */
+/* $NetBSD: progressbar.c,v 1.24.6.2 2024/12/02 10:19:39 martin Exp $ */
/*-
* Copyright (c) 1997-2024 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: progressbar.c,v 1.24.6.1 2024/10/13 16:06:36 martin Exp $");
+__RCSID("$NetBSD: progressbar.c,v 1.24.6.2 2024/12/02 10:19:39 martin Exp $");
#endif /* not lint */
/*
@@ -123,12 +123,12 @@ static struct timeval lastupdate;
void
progressmeter(int flag)
{
- static off_t lastsize;
- off_t cursize;
+ static uint64_t lastsize;
+ uint64_t cursize;
struct timeval now, wait;
#ifndef NO_PROGRESS
struct timeval td;
- off_t abbrevsize, bytespersec;
+ uint64_t abbrevsize, bytespersec;
double elapsed;
int ratio, i, remaining, barlength;
@@ -261,7 +261,7 @@ progressmeter(int flag)
suffixes[i]);
if (filesize > 0) {
- if (bytes <= 0 || elapsed <= 0.0 || cursize > filesize) {
+ if (bytes <= 0 || elapsed <= 0.0 || cursize > (uint64_t)filesize) {
len += snprintf(buf + len, BUFLEFT, " --:-- ETA");
} else if (wait.tv_sec >= STALLTIME) {
len += snprintf(buf + len, BUFLEFT, " - stalled -");
Index: src/usr.bin/ftp/ruserpass.c
diff -u src/usr.bin/ftp/ruserpass.c:1.33.86.1 src/usr.bin/ftp/ruserpass.c:1.33.86.2
--- src/usr.bin/ftp/ruserpass.c:1.33.86.1 Sun Oct 13 16:06:36 2024
+++ src/usr.bin/ftp/ruserpass.c Mon Dec 2 10:19:39 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: ruserpass.c,v 1.33.86.1 2024/10/13 16:06:36 martin Exp $ */
+/* $NetBSD: ruserpass.c,v 1.33.86.2 2024/12/02 10:19:39 martin Exp $ */
/*
* Copyright (c) 1985, 1993, 1994
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)ruserpass.c 8.4 (Berkeley) 4/27/95";
#else
-__RCSID("$NetBSD: ruserpass.c,v 1.33.86.1 2024/10/13 16:06:36 martin Exp $");
+__RCSID("$NetBSD: ruserpass.c,v 1.33.86.2 2024/12/02 10:19:39 martin Exp $");
#endif
#endif /* not lint */
@@ -79,6 +79,20 @@ static struct toktab {
{ NULL, 0 }
};
+static int
+match_host_domain(const char *host, const char *domain, const char *tokv)
+{
+ const char *tmp;
+
+ if (strcasecmp(host, tokval) == 0)
+ return 1;
+
+ return (tmp = strchr(host, '.')) != NULL &&
+ strcasecmp(tmp, domain) == 0 &&
+ strncasecmp(host, tokv, tmp - host) == 0 &&
+ tokv[tmp - host] == '\0';
+}
+
int
ruserpass(const char *host, char **aname, char **apass, char **aacct)
{
@@ -119,19 +133,9 @@ ruserpass(const char *host, char **aname
* or official hostname. Also allow match of
* incompletely-specified host in local domain.
*/
- if (strcasecmp(host, tokval) == 0)
- goto match;
- if (strcasecmp(hostname, tokval) == 0)
- goto match;
- if ((tmp = strchr(hostname, '.')) != NULL &&
- strcasecmp(tmp, mydomain) == 0 &&
- strncasecmp(hostname, tokval, tmp-hostname) == 0 &&
- tokval[tmp - hostname] == '\0')
+ if (match_host_domain(hostname, mydomain, tokval))
goto match;
- if ((tmp = strchr(host, '.')) != NULL &&
- strcasecmp(tmp, mydomain) == 0 &&
- strncasecmp(host, tokval, tmp - host) == 0 &&
- tokval[tmp - host] == '\0')
+ if (match_host_domain(host, mydomain, tokval))
goto match;
continue;
}
Index: src/usr.bin/ftp/util.c
diff -u src/usr.bin/ftp/util.c:1.164.2.3 src/usr.bin/ftp/util.c:1.164.2.4
--- src/usr.bin/ftp/util.c:1.164.2.3 Sun Oct 13 16:06:36 2024
+++ src/usr.bin/ftp/util.c Mon Dec 2 10:19:39 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: util.c,v 1.164.2.3 2024/10/13 16:06:36 martin Exp $ */
+/* $NetBSD: util.c,v 1.164.2.4 2024/12/02 10:19:39 martin Exp $ */
/*-
* Copyright (c) 1997-2023 The NetBSD Foundation, Inc.
@@ -64,7 +64,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: util.c,v 1.164.2.3 2024/10/13 16:06:36 martin Exp $");
+__RCSID("$NetBSD: util.c,v 1.164.2.4 2024/12/02 10:19:39 martin Exp $");
#endif /* not lint */
/*
@@ -209,7 +209,7 @@ getremoteinfo(void)
(int)os_len, reply_string + 4);
}
/*
- * Decide whether we should default to bninary.
+ * Decide whether we should default to binary.
* Traditionally checked for "215 UNIX Type: L8", but
* some printers report "Linux" ! so be more forgiving.
* In reality we probably almost never want text any more.
Index: src/usr.bin/ftp/version.h
diff -u src/usr.bin/ftp/version.h:1.95.2.2 src/usr.bin/ftp/version.h:1.95.2.3
--- src/usr.bin/ftp/version.h:1.95.2.2 Tue May 16 16:26:03 2023
+++ src/usr.bin/ftp/version.h Mon Dec 2 10:19:39 2024
@@ -1,7 +1,7 @@
-/* $NetBSD: version.h,v 1.95.2.2 2023/05/16 16:26:03 martin Exp $ */
+/* $NetBSD: version.h,v 1.95.2.3 2024/12/02 10:19:39 martin Exp $ */
/*-
- * Copyright (c) 1999-2023 The NetBSD Foundation, Inc.
+ * Copyright (c) 1999-2024 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -34,5 +34,5 @@
#endif
#ifndef FTP_VERSION
-#define FTP_VERSION "20230505"
+#define FTP_VERSION "20241129"
#endif