]> www.infradead.org Git - users/hch/nvme-cli.git/commitdiff
Use fixed-width integer types for long suffixed parameters
authorKeith Busch <keith.busch@intel.com>
Fri, 30 Mar 2018 16:57:14 +0000 (10:57 -0600)
committerKeith Busch <keith.busch@intel.com>
Fri, 30 Mar 2018 16:57:14 +0000 (10:57 -0600)
Fixes possible truncation on 32-bit archs.

Link: https://github.com/linux-nvme/nvme-cli/issues/330
Signed-off-by: Keith Busch <keith.busch@intel.com>
argconfig.c
suffix.c
suffix.h

index 0eca5eed09507193bc74df2ad32b7d5bc2be0bc9..3fda34d7af4f1363f57927518c534041c6a9a390 100644 (file)
@@ -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",
index 544ddfe190aadabe735d2f52c3725d07770be2af..e6f2a96e9934755c76694f109a0ba1a8966f83b8 100644 (file)
--- 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;
 
index ce58593f5f2ae0e11675900c6491e243c75bf2b8..b41d59577483a773d38df609aac1b20e72f8fa96 100644 (file)
--- a/suffix.h
+++ b/suffix.h
 
 #ifndef __ARGCONFIG_SUFFIX_H__
 
+#include <inttypes.h>
+
 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