util: check overflow in parse_time()

This commit is contained in:
Yu Watanabe
2018-10-23 22:23:34 +09:00
parent 3f1c1287a9
commit 8079c90333
+10 -1
View File
@@ -1048,12 +1048,21 @@ int parse_time(const char *t, usec_t *usec, usec_t default_unit) {
something = true;
k = ((usec_t) -1) / multiplier;
if ((usec_t) l + 1 >= k || (usec_t) z >= k)
return -ERANGE;
k = (usec_t) z * multiplier;
for (; n > 0; n--)
k /= 10;
r += (usec_t) l * multiplier + k;
k += (usec_t) l * multiplier;
if (k >= ((usec_t) -1) - r)
return -ERANGE;
r += k;
}
*usec = r;