From: Christian Brauner Date: Wed, 7 Sep 2016 15:47:50 +0000 (+0200) Subject: utils: add lxc_safe_int() X-Git-Tag: lxc-2.1.0~257^2~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5f845e7e0793607837757ea02dac1ccb44e8796;p=thirdparty%2Flxc.git utils: add lxc_safe_int() Signed-off-by: Christian Brauner --- diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 9bf31570d..3b05842b6 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -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; +} diff --git a/src/lxc/utils.h b/src/lxc/utils.h index 0706125e1..8fba5152e 100644 --- a/src/lxc/utils.h +++ b/src/lxc/utils.h @@ -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 */