lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Wed, 19 Jan 2022 08:29:40 -0800
From:   Ian Rogers <irogers@...gle.com>
To:     Arnaldo Carvalho de Melo <acme@...nel.org>
Cc:     Jiri Olsa <jolsa@...nel.org>,
        Adrian Hunter <adrian.hunter@...el.com>,
        Namhyung Kim <namhyung@...nel.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        linux-perf-users@...r.kernel.org
Subject: Re: [PATCH 1/1] perf machine: Use path__join() to compose a path
 instead of snprintf(dir, '/', filename)

On Tue, Jan 18, 2022 at 7:13 AM Arnaldo Carvalho de Melo
<acme@...nel.org> wrote:
>
> Its more intention revealing, and if we're interested in the odd cases
> where this may end up truncating we can do debug checks at one
> centralized place.
>
> Motivation, of all the container builds, fedora rawhide started
> complaining of:
>
>   util/machine.c: In function ‘machine__create_modules’:
>   util/machine.c:1419:50: error: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size between 0 and 4095 [-Werror=format-truncation=]
>    1419 |                 snprintf(path, sizeof(path), "%s/%s", dir_name, dent->d_name);
>         |                                                  ^~
>   In file included from /usr/include/stdio.h:894,
>                    from util/branch.h:9,
>                    from util/callchain.h:8,
>                    from util/machine.c:7:
>   In function ‘snprintf’,
>       inlined from ‘maps__set_modules_path_dir’ at util/machine.c:1419:3,
>       inlined from ‘machine__set_modules_path’ at util/machine.c:1473:9,
>       inlined from ‘machine__create_modules’ at util/machine.c:1519:7:
>   /usr/include/bits/stdio2.h:71:10: note: ‘__builtin___snprintf_chk’ output between 2 and 4352 bytes into a destination of size 4096
>
> There are other places where we should use path__join(), but lets get rid of
> this one first.

Acked-by: Ian Rogers <irogers@...gle.com>

Thanks,
Ian

> Cc: Adrian Hunter <adrian.hunter@...el.com>
> Cc: Ian Rogers <irogers@...gle.com>
> Cc: Jiri Olsa <jolsa@...nel.org>
> Cc: Namhyung Kim <namhyung@...nel.org>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com>
> ---
>  tools/perf/util/machine.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
> index 3901440aeff92652..f70ba56912d4f9f8 100644
> --- a/tools/perf/util/machine.c
> +++ b/tools/perf/util/machine.c
> @@ -16,6 +16,7 @@
>  #include "map_symbol.h"
>  #include "branch.h"
>  #include "mem-events.h"
> +#include "path.h"
>  #include "srcline.h"
>  #include "symbol.h"
>  #include "sort.h"
> @@ -1416,7 +1417,7 @@ static int maps__set_modules_path_dir(struct maps *maps, const char *dir_name, i
>                 struct stat st;
>
>                 /*sshfs might return bad dent->d_type, so we have to stat*/
> -               snprintf(path, sizeof(path), "%s/%s", dir_name, dent->d_name);
> +               path__join(path, sizeof(path), dir_name, dent->d_name);
>                 if (stat(path, &st))
>                         continue;
>
> --
> 2.34.1
>

Powered by blists - more mailing lists