From: Keith Busch Date: Fri, 30 Mar 2018 16:57:14 +0000 (-0600) Subject: Use fixed-width integer types for long suffixed parameters X-Git-Tag: v1.6~59 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=242b8328ff589b668e7970fa4ed21fedd8cfda2d;p=users%2Fsagi%2Fnvme-cli.git Use fixed-width integer types for long suffixed parameters Fixes possible truncation on 32-bit archs. Link: https://github.com/linux-nvme/nvme-cli/issues/330 Signed-off-by: Keith Busch --- diff --git a/argconfig.c b/argconfig.c index 0eca5eed..3fda34d7 100644 --- a/argconfig.c +++ b/argconfig.c @@ -285,7 +285,7 @@ int argconfig_parse(int argc, char *argv[], const char *program_desc, goto out; } } else if (s->config_type == CFG_LONG_SUFFIX) { - *((long *)value_addr) = suffix_binary_parse(optarg); + *((uint64_t *)value_addr) = suffix_binary_parse(optarg); if (errno) { fprintf(stderr, "Expected long suffixed integer argument for '%s' but got '%s'!\n", diff --git a/suffix.c b/suffix.c index 544ddfe1..e6f2a96e 100644 --- a/suffix.c +++ b/suffix.c @@ -109,11 +109,11 @@ const char *suffix_dbinary_get(double *value) return ""; } -long long suffix_binary_parse(const char *value) +uint64_t suffix_binary_parse(const char *value) { char *suffix; errno = 0; - long long ret = strtoll(value, &suffix, 0); + uint64_t ret = strtoll(value, &suffix, 0); if (errno) return 0; diff --git a/suffix.h b/suffix.h index ce58593f..b41d5957 100644 --- a/suffix.h +++ b/suffix.h @@ -31,9 +31,11 @@ #ifndef __ARGCONFIG_SUFFIX_H__ +#include + const char *suffix_si_get(double *value); const char *suffix_binary_get(long long *value); const char *suffix_dbinary_get(double *value); -long long suffix_binary_parse(const char *value); +uint64_t suffix_binary_parse(const char *value); #endif