diff options
author | Damien Miller <djm@mindrot.org> | 2014-01-10 00:40:45 +0100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2014-01-10 00:40:45 +0100 |
commit | e00e413dd16eb747fb2c15a099971d91c13cf70f (patch) | |
tree | a1c10658e14c9b48e5633d4894a07136cd232e54 /sftp-common.c | |
parent | - tedu@cvs.openbsd.org 2014/01/04 17:50:55 (diff) | |
download | openssh-e00e413dd16eb747fb2c15a099971d91c13cf70f.tar.xz openssh-e00e413dd16eb747fb2c15a099971d91c13cf70f.zip |
- guenther@cvs.openbsd.org 2014/01/09 03:26:00
[sftp-common.c]
When formating the time for "ls -l"-style output, show dates in the future
with the year, and rearrange a comparison to avoid a potentional signed
arithmetic overflow that would give the wrong result.
ok djm@
Diffstat (limited to '')
-rw-r--r-- | sftp-common.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sftp-common.c b/sftp-common.c index 88bf51bc6..70a929ccc 100644 --- a/sftp-common.c +++ b/sftp-common.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sftp-common.c,v 1.25 2013/11/08 11:15:19 dtucker Exp $ */ +/* $OpenBSD: sftp-common.c,v 1.26 2014/01/09 03:26:00 guenther Exp $ */ /* * Copyright (c) 2001 Markus Friedl. All rights reserved. * Copyright (c) 2001 Damien Miller. All rights reserved. @@ -195,6 +195,7 @@ ls_file(const char *name, const struct stat *st, int remote, int si_units) char *user, *group; char buf[1024], mode[11+1], tbuf[12+1], ubuf[11+1], gbuf[11+1]; char sbuf[FMT_SCALED_STRSIZE]; + time_t now; strmode(st->st_mode, mode); if (!remote) { @@ -210,7 +211,9 @@ ls_file(const char *name, const struct stat *st, int remote, int si_units) group = gbuf; } if (ltime != NULL) { - if (time(NULL) - st->st_mtime < (365*24*60*60)/2) + now = time(NULL); + if (now - (365*24*60*60)/2 < st->st_mtime && + now >= st->st_mtime) sz = strftime(tbuf, sizeof tbuf, "%b %e %H:%M", ltime); else sz = strftime(tbuf, sizeof tbuf, "%b %e %Y", ltime); |