]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
utils: add lxc_safe_int()
authorChristian Brauner <christian.brauner@canonical.com>
Wed, 7 Sep 2016 15:47:50 +0000 (17:47 +0200)
committerChristian Brauner <christian.brauner@canonical.com>
Tue, 22 Nov 2016 02:41:05 +0000 (03:41 +0100)
Signed-off-by: Christian Brauner <christian.brauner@canonical.com>
src/lxc/utils.c
src/lxc/utils.h

index 9bf31570d8c9d06168b539944a79926ba4b01293..3b05842b6baf915e3b12adfe54574e9fc1f86edc 100644 (file)
@@ -2008,3 +2008,23 @@ int lxc_safe_uint(const char *numstr, unsigned int *converted)
        *converted = (unsigned)uli;
        return 0;
 }
+
+int lxc_safe_int(const char *numstr, int *converted)
+{
+       char *err = NULL;
+       signed long int sli;
+
+       errno = 0;
+       sli = strtol(numstr, &err, 0);
+       if (errno > 0)
+               return -errno;
+
+       if (!err || err == numstr || *err != '\0')
+               return -EINVAL;
+
+       if (sli > INT_MAX)
+               return -ERANGE;
+
+       *converted = (int)sli;
+       return 0;
+}
index 0706125e1b8c29dcc69dd1491e29091ce80c8a01..8fba5152ed8b60377a5040abc4c4e2c5c9b78f7b 100644 (file)
@@ -319,5 +319,6 @@ bool task_blocking_signal(pid_t pid, int signal);
 
 /* Helper functions to parse numbers. */
 int lxc_safe_uint(const char *numstr, unsigned int *converted);
+int lxc_safe_int(const char *numstr, int *converted);
 
 #endif /* __LXC_UTILS_H */