values, and also for (perhaps not all) off_t values. And while here, fix an unrelated LP64 bug calling execl(). PKGREVISION -> 4.
102 lines
3.5 KiB
Text
102 lines
3.5 KiB
Text
$NetBSD: patch-an,v 1.2 2010/06/12 19:36:01 dholland Exp $
|
|
|
|
Print and parse time_t as intmax_t, not as long (which might not fit).
|
|
Likewise for (perhaps only some uses of) off_t.
|
|
|
|
--- src/client.c.orig 1999-11-01 00:22:14.000000000 +0000
|
|
+++ src/client.c
|
|
@@ -433,9 +433,9 @@ static int sendfile(rname, opts, stb, us
|
|
debugmsg(DM_MISC, "Turning off compression");
|
|
}
|
|
|
|
- (void) sendcmd(C_RECVREG, "%o %04o %ld %ld %ld %s %s %s",
|
|
- opts, stb->st_mode & 07777, (long) stb->st_size,
|
|
- stb->st_mtime, stb->st_atime,
|
|
+ (void) sendcmd(C_RECVREG, "%o %04o %jd %jd %jd %s %s %s",
|
|
+ opts, stb->st_mode & 07777, (intmax_t) stb->st_size,
|
|
+ (intmax_t)stb->st_mtime, (intmax_t)stb->st_atime,
|
|
user, group, ername);
|
|
if (response() < 0) {
|
|
(void) close(f);
|
|
@@ -450,8 +450,8 @@ static int sendfile(rname, opts, stb, us
|
|
}
|
|
}
|
|
|
|
- debugmsg(DM_MISC, "Send file '%s' %ld bytes%s\n", rname,
|
|
- (long) stb->st_size, rem_wz ? " (compressing)" : "");
|
|
+ debugmsg(DM_MISC, "Send file '%s' %jd bytes%s\n", rname,
|
|
+ (intmax_t) stb->st_size, rem_wz ? " (compressing)" : "");
|
|
|
|
/*
|
|
* Set remote time out alarm handler.
|
|
@@ -732,9 +732,9 @@ static int sendlink(rname, opts, stb, us
|
|
* Gather and send basic link info
|
|
*/
|
|
ENCODE(ername, rname);
|
|
- (void) sendcmd(C_RECVSYMLINK, "%o %04o %ld %ld %ld %s %s %s",
|
|
- opts, stb->st_mode & 07777, (long) stb->st_size,
|
|
- stb->st_mtime, stb->st_atime,
|
|
+ (void) sendcmd(C_RECVSYMLINK, "%o %04o %jd %jd %jd %s %s %s",
|
|
+ opts, stb->st_mode & 07777, (intmax_t) stb->st_size,
|
|
+ (intmax_t)stb->st_mtime, (intmax_t)stb->st_atime,
|
|
user, group, ername);
|
|
if (response() < 0)
|
|
return(-1);
|
|
@@ -833,6 +833,7 @@ static int update(rname, opts, statp)
|
|
{
|
|
off_t size;
|
|
time_t mtime;
|
|
+ intmax_t size_big, mtime_big;
|
|
unsigned short lmode;
|
|
unsigned short rmode;
|
|
char *owner = NULL, *group = NULL;
|
|
@@ -921,7 +922,12 @@ static int update(rname, opts, statp)
|
|
/*
|
|
* Parse size
|
|
*/
|
|
- size = (off_t) strtol(cp, (char **)&cp, 10);
|
|
+ size_big = strtoimax(cp, (char **)&cp, 10);
|
|
+ if ((intmax_t)(off_t)size_big != size_big) {
|
|
+ error("update: size out of range");
|
|
+ return(US_NOTHING);
|
|
+ }
|
|
+ size = (off_t)size_big;
|
|
if (*cp++ != ' ') {
|
|
error("update: size not delimited");
|
|
return(US_NOTHING);
|
|
@@ -930,7 +936,12 @@ static int update(rname, opts, statp)
|
|
/*
|
|
* Parse mtime
|
|
*/
|
|
- mtime = strtol(cp, (char **)&cp, 10);
|
|
+ mtime_big = strtoimax(cp, (char **)&cp, 10);
|
|
+ if ((intmax_t)(off_t)mtime_big != mtime_big) {
|
|
+ error("update: mtime out of range");
|
|
+ return(US_NOTHING);
|
|
+ }
|
|
+ mtime = (time_t)mtime_big;
|
|
if (*cp++ != ' ') {
|
|
error("update: mtime not delimited");
|
|
return(US_NOTHING);
|
|
@@ -973,8 +984,8 @@ static int update(rname, opts, statp)
|
|
|
|
debugmsg(DM_MISC, "update(%s,) local mode %04o remote mode %04o\n",
|
|
rname, lmode, rmode);
|
|
- debugmsg(DM_MISC, "update(%s,) size %ld mtime %d owner '%s' grp '%s'\n",
|
|
- rname, (long) size, mtime, owner, group);
|
|
+ debugmsg(DM_MISC, "update(%s,) size %jd mtime %jd owner '%s' grp '%s'\n",
|
|
+ rname, (intmax_t)size, (intmax_t)mtime, owner, group);
|
|
|
|
if (statp->st_mtime != mtime) {
|
|
if (statp->st_mtime < mtime && IS_ON(opts, DO_YOUNGER)) {
|
|
@@ -987,8 +998,8 @@ static int update(rname, opts, statp)
|
|
}
|
|
|
|
if (statp->st_size != size) {
|
|
- debugmsg(DM_MISC, "size does not match (%ld != %ld).\n",
|
|
- (long) statp->st_size, (long) size);
|
|
+ debugmsg(DM_MISC, "size does not match (%jd != %jd).\n",
|
|
+ (intmax_t)statp->st_size, (intmax_t)size);
|
|
return(US_OUTDATE);
|
|
}
|
|
|