- 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@
diff --git a/sftp-common.c b/sftp-common.c
index 88bf51b..70a929c 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 @@
 	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 @@
 		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);