summaryrefslogtreecommitdiff
path: root/src/crypto/cpu-intel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/crypto/cpu-intel.c')
-rw-r--r--src/crypto/cpu-intel.c10
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;
}