summaryrefslogtreecommitdiff
path: root/usr.bin/ftp
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>2001-04-04 15:09:54 +0000
committerBruce Evans <bde@FreeBSD.org>2001-04-04 15:09:54 +0000
commit09f59dfc92337520ceedfa2ad6d581b3e11288b2 (patch)
treef472e578237410008b94cb59adc6d0c23c6dad43 /usr.bin/ftp
parentbcc43588451617434a845467a7ff3723797b06a8 (diff)
downloadsrc-test-09f59dfc92337520ceedfa2ad6d581b3e11288b2.tar.gz
src-test-09f59dfc92337520ceedfa2ad6d581b3e11288b2.zip
Fixed a null pointer bug in rev.1.10. Rev.1.10 was supposed to to
move the "for safety" zeroing of unused members of timebuf to a better place. It actually moved the zeroing to a worse place and didn't add necessary braces. Fixed a nearby older bug. timebuf.tm_gmtoff was sometimes used even when timebuf was invalid. Even when it is zeroed, a failing mktime() might set it to nonzero. PR: 25243
Notes
Notes: svn path=/head/; revision=75178
Diffstat (limited to 'usr.bin/ftp')
-rw-r--r--usr.bin/ftp/util.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/usr.bin/ftp/util.c b/usr.bin/ftp/util.c
index 0cb2e59ad02b5..a9524dbe8573d 100644
--- a/usr.bin/ftp/util.c
+++ b/usr.bin/ftp/util.c
@@ -512,6 +512,7 @@ remotemodtime(file, noisy)
if (debug == 0)
verbose = -1;
if (command("MDTM %s", file) == COMPLETE) {
+ memset(&timebuf, 0, sizeof(timebuf));
/*
* Parse the time string, which is expected to be 14
* characters long. Some broken servers send tm_year
@@ -529,8 +530,7 @@ remotemodtime(file, noisy)
y2kbug = 1;
} else if (len == 14)
fmt = "%04d%02d%02d%02d%02d%02d";
- if (fmt != NULL)
- memset(&timebuf, 0, sizeof(timebuf));
+ if (fmt != NULL) {
if (sscanf(mtbuf, fmt, &year, &month,
&timebuf.tm_mday, &timebuf.tm_hour,
&timebuf.tm_min, &timebuf.tm_sec) == 6) {
@@ -542,10 +542,12 @@ remotemodtime(file, noisy)
timebuf.tm_year = year - 1900;
rtime = mktime(&timebuf);
}
+ }
}
- if (rtime == -1 && (noisy || debug != 0))
- printf("Can't convert %s to a time.\n", mtbuf);
- else
+ if (rtime == -1) {
+ if (noisy || debug != 0)
+ printf("Can't convert %s to a time.\n", mtbuf);
+ } else
rtime += timebuf.tm_gmtoff; /* conv. local -> GMT */
} else if (noisy && debug == 0)
puts(reply_string);