diff options
Diffstat (limited to 'src/crypto/cpu-intel.c')
-rw-r--r-- | src/crypto/cpu-intel.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/crypto/cpu-intel.c b/src/crypto/cpu-intel.c index 832e9d6d..cc41fc47 100644 --- a/src/crypto/cpu-intel.c +++ b/src/crypto/cpu-intel.c @@ -123,9 +123,17 @@ static uint64_t OPENSSL_xgetbv(uint32_t xcr) { // and |out[1]|. See the comment in |OPENSSL_cpuid_setup| about this. static void handle_cpu_env(uint32_t *out, const char *in) { const int invert = in[0] == '~'; + const int hex = in[invert] == '0' && in[invert+1] == 'x'; + + int sscanf_result; uint64_t v; + if (hex) { + sscanf_result = sscanf(in + invert + 2, "%" PRIx64, &v); + } else { + sscanf_result = sscanf(in + invert, "%" PRIu64, &v); + } - if (!sscanf(in + invert, "%" PRIu64, &v)) { + if (!sscanf_result) { return; } |