parse-util: detect overflows in parse_percent_unbounded()

We shouldn't accept percentages beyon INT32_MAX and consider them
valid.
This commit is contained in:
Lennart Poettering
2018-01-16 11:53:43 +01:00
parent b5ffbc5579
commit bac794f607
+5 -4
View File
@@ -592,19 +592,20 @@ int parse_fractional_part_u(const char **p, size_t digits, unsigned *res) {
int parse_percent_unbounded(const char *p) {
const char *pc, *n;
unsigned v;
int r;
int r, v;
pc = endswith(p, "%");
if (!pc)
return -EINVAL;
n = strndupa(p, pc - p);
r = safe_atou(n, &v);
r = safe_atoi(n, &v);
if (r < 0)
return r;
if (v < 0)
return -ERANGE;
return (int) v;
return v;
}
int parse_percent(const char *p) {