From ef2fa5631494100010b1888b0c0a3242075efe23 Mon Sep 17 00:00:00 2001 From: Alex Newman Date: Thu, 1 Dec 2016 15:22:25 -0800 Subject: [PATCH] src: fix string format mistake for 32 bit node MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘unsigned int’ [-Wformat=] BIO_printf(bio, "0x%lx", exponent_word); PR-URL: https://github.com/nodejs/node/pull/10082 Reviewed-By: Anna Henningsen Reviewed-By: Ben Noordhuis --- src/node_crypto.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/node_crypto.cc b/src/node_crypto.cc index 8f2f75048f7e9d..abfa8c585f0773 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -1536,9 +1536,14 @@ static Local X509ToObject(Environment* env, X509* cert) { String::kNormalString, mem->length)); (void) BIO_reset(bio); - BN_ULONG exponent_word = BN_get_word(rsa->e); - BIO_printf(bio, "0x%lx", exponent_word); - + uint64_t exponent_word = static_cast(BN_get_word(rsa->e)); + uint32_t lo = static_cast(exponent_word); + uint32_t hi = static_cast(exponent_word >> 32); + if (hi == 0) { + BIO_printf(bio, "0x%x", lo); + } else { + BIO_printf(bio, "0x%x%08x", hi, lo); + } BIO_get_mem_ptr(bio, &mem); info->Set(env->exponent_string(), String::NewFromUtf8(env->isolate(), mem->data,