]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
utils: add lxc_safe_long()
authorChristian Brauner <christian.brauner@canonical.com>
Sat, 29 Oct 2016 10:39:36 +0000 (12:39 +0200)
committerChristian Brauner <christian.brauner@canonical.com>
Tue, 22 Nov 2016 03:46:11 +0000 (04:46 +0100)
Signed-off-by: Christian Brauner <christian.brauner@canonical.com>
src/lxc/utils.c
src/lxc/utils.h

index e1191a3cff51f4c446f82563ddd732f3a181bfc0..200f5cdaf3bd86e66f697bfb70bd47c9826f74f1 100644 (file)
@@ -2007,7 +2007,7 @@ int lxc_safe_uint(const char *numstr, unsigned int *converted)
        if (uli > UINT_MAX)
                return -ERANGE;
 
-       *converted = (unsigned)uli;
+       *converted = (unsigned int)uli;
        return 0;
 }
 
@@ -2030,3 +2030,23 @@ int lxc_safe_int(const char *numstr, int *converted)
        *converted = (int)sli;
        return 0;
 }
+
+int lxc_safe_long(const char *numstr, long 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 > LONG_MAX)
+               return -ERANGE;
+
+       *converted = sli;
+       return 0;
+}
index 8fba5152ed8b60377a5040abc4c4e2c5c9b78f7b..0d63bb6997bfe2e50df9054834f4504337d03399 100644 (file)
@@ -320,5 +320,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);
+int lxc_safe_long(const char *numstr, long int *converted);
 
 #endif /* __LXC_UTILS_H */