]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: debug: fix pointer check in debug_parse_cli_task()
authorAurelien DARRAGON <adarragon@haproxy.com>
Mon, 15 May 2023 09:59:08 +0000 (11:59 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 17 May 2023 14:49:17 +0000 (16:49 +0200)
commitb6a24a52a2efc597624521de752256a5c4ee5c5b
treef5b5b8c7f438e899040d9d1e1efc364fd24f042b
parent7428adaf0da600e9b80fc3857d24483656cb4f45
BUG/MINOR: debug: fix pointer check in debug_parse_cli_task()

Task pointer check in debug_parse_cli_task() computes the theoric end
address of provided task pointer to check if it is valid or not thanks to
may_access() helper function.

However, relative ending address is calculated by adding task size to 't'
pointer (which is a struct task pointer), thus it will result to incorrect
address since the compiler automatically translates 't + x' to
't + x * sizeof(*t)' internally (with sizeof(*t) != 1 here).

Solving the issue by using 'ptr' (which is the void * raw address) as
starting address to prevent automatic address scaling.

This was revealed by coverity, see GH #2157.

No backport is needed, unless 9867987 ("DEBUG: cli: add "debug dev task"
to show/wake/expire/kill tasks and tasklets") gets backported.
src/debug.c