From 170660ed11b56145dea4865e751ae5aff1681fe2 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Mon, 10 Apr 2017 15:04:57 +0900 Subject: [PATCH] agent: Use "ll" length specifier when time_t is larger. * agent/command.c (cmd_keytocard): Use KEYTOCARD_TIMESTAMP_FORMAT. -- On a big-endian 32-bit platform which uses 64-bit time_t, it might go wrong. Signed-off-by: NIIBE Yutaka --- agent/command.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/agent/command.c b/agent/command.c index 1f8f7c2d8..ab6d7eb24 100644 --- a/agent/command.c +++ b/agent/command.c @@ -2477,6 +2477,12 @@ cmd_delete_key (assuan_context_t ctx, char *line) +#if SIZEOF_TIME_T > SIZEOF_UNSIGNED_LONG +#define KEYTOCARD_TIMESTAMP_FORMAT "(10:created-at10:%010llu))" +#else +#define KEYTOCARD_TIMESTAMP_FORMAT "(10:created-at10:%010lu))" +#endif + static const char hlp_keytocard[] = "KEYTOCARD [--force] \n" "\n"; @@ -2580,7 +2586,7 @@ cmd_keytocard (assuan_context_t ctx, char *line) gcry_sexp_release (s_skey); keydatalen--; /* Decrement for last '\0'. */ /* Add timestamp "created-at" in the private key */ - snprintf (keydata+keydatalen-1, 30, "(10:created-at10:%010lu))", timestamp); + snprintf (keydata+keydatalen-1, 30, KEYTOCARD_TIMESTAMP_FORMAT, timestamp); keydatalen += 10 + 19 - 1; err = divert_writekey (ctrl, force, serialno, id, keydata, keydatalen); xfree (keydata);