• Sergei Trofimovich's avatar
    objtool: Fix truncated string warning · 82880283
    Sergei Trofimovich authored
    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: db2b0c5d ("objtool: Support pv_opsindirect calls for noinstr")
    Reported-by: default avatarAdam Borowski <kilobyte@angband.pl>
    Reported-by: default avatarMartin Liška <mliska@suse.cz>
    Signed-off-by: default avatarSergei Trofimovich <slyich@gmail.com>
    Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Link: https://lore.kernel.org/r/20220120233748.2062559-1-slyich@gmail.com
    82880283
check.c 83.4 KB