From a4c74e88e4bfce51cca22ed9d73d7d6bd96b4b87 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Sun, 26 Mar 2017 22:38:05 +0200 Subject: [PATCH] apps/passwd.c: 32 bits are sufficient to hold ROUNDS_MAX. Even though C standard defines 'z' modifier, recent mingw compilers break the contract by defining __STDC_VERSION__ with non-compliant MSVCRT.DLL. In other words we can't use %zu with mingw, but insteadl of cooking Reviewed-by: Tim Hudson --- apps/passwd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/passwd.c b/apps/passwd.c index 5be728f7c0..4820f706cc 100644 --- a/apps/passwd.c +++ b/apps/passwd.c @@ -502,7 +502,7 @@ static char *shacrypt(const char *passwd, const char *magic, const char *salt) EVP_MD_CTX *md = NULL, *md2 = NULL; const EVP_MD *sha = NULL; size_t passwd_len, salt_len, magic_len; - size_t rounds = 5000; /* Default */ + unsigned int rounds = 5000; /* Default */ char rounds_custom = 0; char *p_bytes = NULL; char *s_bytes = NULL; @@ -539,7 +539,7 @@ static char *shacrypt(const char *passwd, const char *magic, const char *salt) else if (srounds < ROUNDS_MIN) rounds = ROUNDS_MIN; else - rounds = srounds; + rounds = (unsigned int)srounds; rounds_custom = 1; } else { return NULL; @@ -556,7 +556,7 @@ static char *shacrypt(const char *passwd, const char *magic, const char *salt) OPENSSL_strlcat(out_buf, "$", sizeof out_buf); if (rounds_custom) { char tmp_buf[80]; /* "rounds=999999999" */ - sprintf(tmp_buf, "rounds=%"OSSLzu, rounds); + sprintf(tmp_buf, "rounds=%u", rounds); OPENSSL_strlcat(out_buf, tmp_buf, sizeof out_buf); OPENSSL_strlcat(out_buf, "$", sizeof out_buf); }