1
0
mirror of https://github.com/systemd/systemd.git synced 2025-02-10 17:57:40 +03:00

parse-util: make safe_atou8() just a wrapper around safe_atou8_full()

As in the previous commit: it's just a wrapper around the same
strtoul(), hence let's just share some more code.
This commit is contained in:
Lennart Poettering 2022-09-05 18:08:16 +02:00
parent c74101200c
commit 11a1ac5978
2 changed files with 13 additions and 21 deletions

View File

@ -476,29 +476,17 @@ int safe_atolli(const char *s, long long int *ret_lli) {
return 0;
}
int safe_atou8(const char *s, uint8_t *ret) {
unsigned base = 0;
unsigned long l;
char *x = NULL;
int safe_atou8_full(const char *s, unsigned base, uint8_t *ret) {
unsigned u;
int r;
assert(s);
s += strspn(s, WHITESPACE);
s = mangle_base(s, &base);
errno = 0;
l = strtoul(s, &x, base);
if (errno > 0)
return -errno;
if (!x || x == s || *x != 0)
return -EINVAL;
if (l != 0 && s[0] == '-')
return -ERANGE;
if ((unsigned long) (uint8_t) l != l)
r = safe_atou_full(s, base, &u);
if (r < 0)
return r;
if (u > UINT8_MAX)
return -ERANGE;
if (ret)
*ret = (uint8_t) l;
*ret = (uint8_t) u;
return 0;
}

View File

@ -36,7 +36,11 @@ static inline int safe_atou(const char *s, unsigned *ret_u) {
int safe_atoi(const char *s, int *ret_i);
int safe_atolli(const char *s, long long int *ret_i);
int safe_atou8(const char *s, uint8_t *ret);
int safe_atou8_full(const char *s, unsigned base, uint8_t *ret);
static inline int safe_atou8(const char *s, uint8_t *ret) {
return safe_atou8_full(s, 0, ret);
}
int safe_atou16_full(const char *s, unsigned base, uint16_t *ret);