Use existing format_absolute_time() function when printing cert validity
authordtucker <dtucker@openbsd.org>
Mon, 12 Jul 2021 06:08:57 +0000 (06:08 +0000)
committerdtucker <dtucker@openbsd.org>
Mon, 12 Jul 2021 06:08:57 +0000 (06:08 +0000)
instead of doing it inline.  Part of bz#3329.

usr.bin/ssh/sshkey.c

index d313fa2..3e2fdbd 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.c,v 1.117 2021/07/05 01:21:07 dtucker Exp $ */
+/* $OpenBSD: sshkey.c,v 1.118 2021/07/12 06:08:57 dtucker Exp $ */
 /*
  * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
  * Copyright (c) 2008 Alexander von Gernler.  All rights reserved.
@@ -3114,28 +3114,16 @@ size_t
 sshkey_format_cert_validity(const struct sshkey_cert *cert, char *s, size_t l)
 {
        char from[32], to[32], ret[128];
-       time_t tt;
-       struct tm *tm;
 
        *from = *to = '\0';
        if (cert->valid_after == 0 &&
            cert->valid_before == 0xffffffffffffffffULL)
                return strlcpy(s, "forever", l);
 
-       if (cert->valid_after != 0) {
-               /* XXX revisit INT_MAX in 2038 :) */
-               tt = cert->valid_after > INT_MAX ?
-                   INT_MAX : cert->valid_after;
-               tm = localtime(&tt);
-               strftime(from, sizeof(from), "%Y-%m-%dT%H:%M:%S", tm);
-       }
-       if (cert->valid_before != 0xffffffffffffffffULL) {
-               /* XXX revisit INT_MAX in 2038 :) */
-               tt = cert->valid_before > INT_MAX ?
-                   INT_MAX : cert->valid_before;
-               tm = localtime(&tt);
-               strftime(to, sizeof(to), "%Y-%m-%dT%H:%M:%S", tm);
-       }
+       if (cert->valid_after != 0)
+               format_absolute_time(cert->valid_after, from, sizeof(from));
+       if (cert->valid_before != 0xffffffffffffffffULL)
+               format_absolute_time(cert->valid_before, to, sizeof(to));
 
        if (cert->valid_after == 0)
                snprintf(ret, sizeof(ret), "before %s", to);