]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
objtool: Fix truncated string warning
authorSergei Trofimovich <slyich@gmail.com>
Thu, 20 Jan 2022 23:37:48 +0000 (23:37 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Feb 2022 17:35:18 +0000 (18:35 +0100)
commitf5b14654ae1bd1eec3b4d0ead11ad08eec4ac783
tree24e7cbf5ab1a223bc0aa294df4981e6d91dbae0d
parentd0a9662105c18a233af1df853facc7e6fa18e2f8
objtool: Fix truncated string warning

[ Upstream commit 82880283d7fcd0a1d20964a56d6d1a5cc0df0713 ]

On GCC 12, the build fails due to a possible truncated string:

    check.c: In function 'validate_call':
    check.c:2865:58: error: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 9 [-Werror=format-truncation=]
     2865 |                 snprintf(pvname, sizeof(pvname), "pv_ops[%d]", idx);
          |                                                          ^~

In theory it's a valid bug:

    static char pvname[16];
    int idx;
    ...
    idx = (rel->addend / sizeof(void *));
    snprintf(pvname, sizeof(pvname), "pv_ops[%d]", idx);

There are only 7 chars for %d while it could take up to 9, so the
printed "pv_ops[%d]" string could get truncated.

In reality the bug should never happen, because pv_ops only has ~80
entries, so 7 chars for the integer is more than enough.  Still, it's
worth fixing.  Bump the buffer size by 2 bytes to silence the warning.

[ jpoimboe: changed size to 19; massaged changelog ]

Fixes: db2b0c5d7b6f ("objtool: Support pv_opsindirect calls for noinstr")
Reported-by: Adam Borowski <kilobyte@angband.pl>
Reported-by: Martin Liška <mliska@suse.cz>
Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/r/20220120233748.2062559-1-slyich@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/objtool/check.c