Date: Tue, 11 Mar 1997 20:10:56 +1030 (CST) From: Peter Childs <pjchilds@imforei.apana.org.au> To: FreeBSD-gnats-submit@freebsd.org Subject: bin/2947: fetch doesn't handle FTP_TIMEOUT correctly? Message-ID: <199703110940.UAA08203@al.imforei.apana.org.au> Resent-Message-ID: <199703110950.BAA09946@freefall.freebsd.org>
index | next in thread | raw e-mail
>Number: 2947
>Category: bin
>Synopsis: fetch doesn't handle FTP_TIMEOUT correctly?
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Mar 11 01:50:02 PST 1997
>Last-Modified:
>Originator: Peter Childs
>Organization:
>Release: FreeBSD 2.2-GAMMA i386 (and 3.0-current)
>Environment:
2.2-gamma
>Description:
/usr/src/usr.bin/fetch/ftp.c has this bit of code...
errno = 0;
ul = strtoul(env, &ep, 0);
if (*env && *ep && errno == 0 && ul <= INT_MAX)
fs->fs_timeout = ul;
and the man page for strtoul says...
unsigned long
strtoul(const char *nptr, char **endptr, int base)
...
If endptr is non nil, strtoul() stores the address of the first invalid
character in *endptr. If there were no digits at all, however, strtoul()
stores the original value of nptr in *endptr. (Thus, if *nptr is not `\0'
but **endptr is `\0' on return, the entire string was valid.)
but we have the endptr bit the wrong way around (i think.. hey.. I only
work here :)
>How-To-Repeat:
Set FTP_TIMEOUT to a valid time (ie something less than INT_MAX) and watch
this statement bail 'cause *ep is never true.
>Fix:
Add a bang.. or for the humour impaired apply this patch.
*** ftp.c.orig Tue Mar 11 19:56:09 1997
--- ftp.c Tue Mar 11 19:56:25 1997
***************
*** 367,373 ****
if (env) {
errno = 0;
ul = strtoul(env, &ep, 0);
! if (*env && *ep && errno == 0 && ul <= INT_MAX)
fs->fs_timeout = ul;
else
warnx("`%s': invalid FTP timeout", env);
--- 367,373 ----
if (env) {
errno = 0;
ul = strtoul(env, &ep, 0);
! if (*env && ! *ep && errno == 0 && ul <= INT_MAX)
fs->fs_timeout = ul;
else
warnx("`%s': invalid FTP timeout", env);
>Audit-Trail:
>Unformatted:
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703110940.UAA08203>
