| From 4d0f16d059ddb91424480d88473f7392f24aebdc Mon Sep 17 00:00:00 2001 |
| From: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Date: Thu, 6 Dec 2018 11:41:03 -0300 |
| Subject: perf ui helpline: Use strlcpy() as a shorter form of strncpy() + explicit set nul |
| |
| From: Arnaldo Carvalho de Melo <acme@redhat.com> |
| |
| commit 4d0f16d059ddb91424480d88473f7392f24aebdc upstream. |
| |
| The strncpy() function may leave the destination string buffer |
| unterminated, better use strlcpy() that we have a __weak fallback |
| implementation for systems without it. |
| |
| In this case we are actually setting the null byte at the right place, |
| but since we pass the buffer size as the limit to strncpy() and not |
| it minus one, gcc ends up warning us about that, see below. So, lets |
| just switch to the shorter form provided by strlcpy(). |
| |
| This fixes this warning on an Alpine Linux Edge system with gcc 8.2: |
| |
| ui/tui/helpline.c: In function 'tui_helpline__push': |
| ui/tui/helpline.c:27:2: error: 'strncpy' specified bound 512 equals destination size [-Werror=stringop-truncation] |
| strncpy(ui_helpline__current, msg, sz)[sz - 1] = '\0'; |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| cc1: all warnings being treated as errors |
| |
| Cc: Adrian Hunter <adrian.hunter@intel.com> |
| Cc: Jiri Olsa <jolsa@kernel.org> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Fixes: e6e904687949 ("perf ui: Introduce struct ui_helpline") |
| Link: https://lkml.kernel.org/n/tip-d1wz0hjjsh19xbalw69qpytj@git.kernel.org |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| tools/perf/ui/tui/helpline.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/tools/perf/ui/tui/helpline.c |
| +++ b/tools/perf/ui/tui/helpline.c |
| @@ -23,7 +23,7 @@ static void tui_helpline__push(const cha |
| SLsmg_set_color(0); |
| SLsmg_write_nstring((char *)msg, SLtt_Screen_Cols); |
| SLsmg_refresh(); |
| - strncpy(ui_helpline__current, msg, sz)[sz - 1] = '\0'; |
| + strlcpy(ui_helpline__current, msg, sz); |
| } |
| |
| static int tui_helpline__show(const char *format, va_list ap) |