Date: Sat, 8 Jan 2000 04:50:03 -0800 (PST) From: Bruce Evans <bde@zeta.org.au> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/15981: rcp -p fails when times have high bit set Message-ID: <200001081250.EAA84657@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/15981; it has been noted by GNATS.
From: Bruce Evans <bde@zeta.org.au>
To: klh@netcom.com
Cc: freebsd-gnats-submit@FreeBSD.ORG
Subject: Re: bin/15981: rcp -p fails when times have high bit set
Date: Sat, 8 Jan 2000 23:49:24 +1100 (EST)
On Sat, 8 Jan 2000 klh@netcom.com wrote:
> >Description:
> This code fragment should be using %ul instead of %ld for both fields.
>
> if (pflag) {
> (void)snprintf(path, sizeof(path), "T%ld 0 %ld 0\n",
> (long)statp->st_mtimespec.tv_sec,
> (long)statp->st_atimespec.tv_sec);
> (void)write(rem, path, strlen(path));
Not under systems with signed time_t like FreeBSD. Using %ul would
break times before the epoch (about 1970).
> >How-To-Repeat:
> Create a file with a st_mtime that has the high bit set. Attempt
> to copy it with "rcp -p foo target:."
> where target is a 64-bit system such as an Alpha (running D/U in this
> case). Will fail with a "mtime.sec not delimited" screwup message
> due to presence of a minus sign.
This seems to be a defect in D/U :-). An st_mtime with the high bit set
is negative. Negative times give undefined behaviour in POSIX.1. FreeBSD
supports them, but actually using them gives interoperability problems like
the one you noticed.
> >Fix:
Don't create files with an st_mtime that is before the epoch.
Related bugs:
FreeBSD's rcp.c lacks range checking of times sent by the target system.
Large times are silently truncated to (time_t)LONG_MAX, i.e., to LONG_MAX
on i386's and -1 on alphas. Large negative times are silently truncated
to (time_t)LONG_MIN, i.e., to LONG_MIN on i386's and 0 on alphas.
Bruce
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001081250.EAA84657>
