]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.4.77/perf-thread_map-correctly-size-buffer-used-with-dirent-dt_name.patch
6.1-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 4.4.77 / perf-thread_map-correctly-size-buffer-used-with-dirent-dt_name.patch
CommitLineData
64c3403a
GKH
1From bdf23a9a190d7ecea092fd5c4aabb7d4bd0a9980 Mon Sep 17 00:00:00 2001
2From: Arnaldo Carvalho de Melo <acme@redhat.com>
3Date: Wed, 8 Feb 2017 17:01:46 -0300
4Subject: perf thread_map: Correctly size buffer used with dirent->dt_name
5
6From: Arnaldo Carvalho de Melo <acme@redhat.com>
7
8commit bdf23a9a190d7ecea092fd5c4aabb7d4bd0a9980 upstream.
9
10The size of dirent->dt_name is NAME_MAX + 1, but the size for the 'path'
11buffer is hard coded at 256, which may truncate it because we also
12prepend "/proc/", so that all that into account and thank gcc 7 for this
13warning:
14
15 /git/linux/tools/perf/util/thread_map.c: In function 'thread_map__new_by_uid':
16 /git/linux/tools/perf/util/thread_map.c:119:39: error: '%s' directive output may be truncated writing up to 255 bytes into a region of size 250 [-Werror=format-truncation=]
17 snprintf(path, sizeof(path), "/proc/%s", dirent->d_name);
18 ^~
19 In file included from /usr/include/stdio.h:939:0,
20 from /git/linux/tools/perf/util/thread_map.c:5:
21 /usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 7 and 262 bytes into a destination of size 256
22 return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
23 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24 __bos (__s), __fmt, __va_arg_pack ());
25 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26
27Cc: Adrian Hunter <adrian.hunter@intel.com>
28Cc: David Ahern <dsahern@gmail.com>
29Cc: Jiri Olsa <jolsa@kernel.org>
30Cc: Namhyung Kim <namhyung@kernel.org>
31Cc: Wang Nan <wangnan0@huawei.com>
32Link: http://lkml.kernel.org/n/tip-csy0r8zrvz5efccgd4k12c82@git.kernel.org
33Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
34Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
35
36---
37 tools/perf/util/thread_map.c | 2 +-
38 1 file changed, 1 insertion(+), 1 deletion(-)
39
40--- a/tools/perf/util/thread_map.c
41+++ b/tools/perf/util/thread_map.c
42@@ -92,7 +92,7 @@ struct thread_map *thread_map__new_by_ui
43 {
44 DIR *proc;
45 int max_threads = 32, items, i;
46- char path[256];
47+ char path[NAME_MAX + 1 + 6];
48 struct dirent dirent, *next, **namelist = NULL;
49 struct thread_map *threads = thread_map__alloc(max_threads);
50