mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:24:47 +01:00
tools/sched_ext: fix strtoul() misuse in scx_hotplug_seq()
scx_hotplug_seq() uses strtoul() but validates the result with a negative check (val < 0), which can never be true for an unsigned return value. Use the endptr mechanism to verify the entire string was consumed, and check errno == ERANGE for overflow detection. Signed-off-by: David Carlier <devnexen@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
749989b2d9
commit
032e084f0d
1 changed files with 5 additions and 2 deletions
|
|
@ -125,6 +125,7 @@ static inline long scx_hotplug_seq(void)
|
|||
{
|
||||
int fd;
|
||||
char buf[32];
|
||||
char *endptr;
|
||||
ssize_t len;
|
||||
long val;
|
||||
|
||||
|
|
@ -137,8 +138,10 @@ static inline long scx_hotplug_seq(void)
|
|||
buf[len] = 0;
|
||||
close(fd);
|
||||
|
||||
val = strtoul(buf, NULL, 10);
|
||||
SCX_BUG_ON(val < 0, "invalid num hotplug events: %lu", val);
|
||||
errno = 0;
|
||||
val = strtoul(buf, &endptr, 10);
|
||||
SCX_BUG_ON(errno == ERANGE || endptr == buf ||
|
||||
(*endptr != '\n' && *endptr != '\0'), "invalid num hotplug events: %ld", val);
|
||||
|
||||
return val;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue