View | Details | Raw Unified | Return to bug 3329 | Differences between
and this patch

Collapse All | Expand All

(-)sshkey.c (-16 / +4 lines)
Lines 3115-3142 size_t Link Here
3115
sshkey_format_cert_validity(const struct sshkey_cert *cert, char *s, size_t l)
3115
sshkey_format_cert_validity(const struct sshkey_cert *cert, char *s, size_t l)
3116
{
3116
{
3117
	char from[32], to[32], ret[128];
3117
	char from[32], to[32], ret[128];
3118
	time_t tt;
3119
	struct tm *tm;
3120
3118
3121
	*from = *to = '\0';
3119
	*from = *to = '\0';
3122
	if (cert->valid_after == 0 &&
3120
	if (cert->valid_after == 0 &&
3123
	    cert->valid_before == 0xffffffffffffffffULL)
3121
	    cert->valid_before == 0xffffffffffffffffULL)
3124
		return strlcpy(s, "forever", l);
3122
		return strlcpy(s, "forever", l);
3125
3123
3126
	if (cert->valid_after != 0) {
3124
	if (cert->valid_after != 0)
3127
		/* XXX revisit INT_MAX in 2038 :) */
3125
		format_absolute_time(cert->valid_after, from, sizeof(from));
3128
		tt = cert->valid_after > INT_MAX ?
3126
	if (cert->valid_before != 0xffffffffffffffffULL)
3129
		    INT_MAX : cert->valid_after;
3127
		format_absolute_time(cert->valid_before, to, sizeof(to));
3130
		tm = localtime(&tt);
3131
		strftime(from, sizeof(from), "%Y-%m-%dT%H:%M:%S", tm);
3132
	}
3133
	if (cert->valid_before != 0xffffffffffffffffULL) {
3134
		/* XXX revisit INT_MAX in 2038 :) */
3135
		tt = cert->valid_before > INT_MAX ?
3136
		    INT_MAX : cert->valid_before;
3137
		tm = localtime(&tt);
3138
		strftime(to, sizeof(to), "%Y-%m-%dT%H:%M:%S", tm);
3139
	}
3140
3128
3141
	if (cert->valid_after == 0)
3129
	if (cert->valid_after == 0)
3142
		snprintf(ret, sizeof(ret), "before %s", to);
3130
		snprintf(ret, sizeof(ret), "before %s", to);
(-)misc.c (-1 / +6 lines)
Lines 2284-2293 parse_absolute_time(const char *s, uint6 Link Here
2284
	return 0;
2284
	return 0;
2285
}
2285
}
2286
2286
2287
/* On OpenBSD time_t is int64_t which is long long. */
2288
#ifndef TIME_T_MAX
2289
# define TIME_T_MAX LLONG_MAX
2290
#endif
2291
2287
void
2292
void
2288
format_absolute_time(uint64_t t, char *buf, size_t len)
2293
format_absolute_time(uint64_t t, char *buf, size_t len)
2289
{
2294
{
2290
	time_t tt = t > INT_MAX ? INT_MAX : t; /* XXX revisit in 2038 :P */
2295
	time_t tt = t > TIME_T_MAX ? TIME_T_MAX : t;
2291
	struct tm tm;
2296
	struct tm tm;
2292
2297
2293
	localtime_r(&tt, &tm);
2298
	localtime_r(&tt, &tm);

Return to bug 3329