diff options
author | Benjamin Gray <bgray@linux.ibm.com> | 2022-11-28 15:19:43 +1100 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2022-12-02 18:04:27 +1100 |
commit | 94ba4f2c33f42dae7813dc169a177e922a39560c (patch) | |
tree | 575b97fcb0ebaa8db09dfff603b7f91634892535 /tools | |
parent | aecfd680099ba518c34dff2941017c5aa97def52 (diff) | |
download | linux-stable-94ba4f2c33f42dae7813dc169a177e922a39560c.tar.gz linux-stable-94ba4f2c33f42dae7813dc169a177e922a39560c.tar.bz2 linux-stable-94ba4f2c33f42dae7813dc169a177e922a39560c.zip |
selftests/powerpc: Add ptrace setup_core_pattern() null-terminator
- malloc() does not zero the buffer,
- fread() does not null-terminate it's output,
- `cat /proc/sys/kernel/core_pattern | hexdump -C` shows the file is
not inherently null-terminated
So using string operations on the buffer is risky. Explicitly add a null
character to the end to make it safer.
Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20221128041948.58339-3-bgray@linux.ibm.com
Diffstat (limited to 'tools')
-rw-r--r-- | tools/testing/selftests/powerpc/ptrace/core-pkey.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/tools/testing/selftests/powerpc/ptrace/core-pkey.c b/tools/testing/selftests/powerpc/ptrace/core-pkey.c index 1a70a96f0bfe..4e8d0ce1ff58 100644 --- a/tools/testing/selftests/powerpc/ptrace/core-pkey.c +++ b/tools/testing/selftests/powerpc/ptrace/core-pkey.c @@ -383,7 +383,7 @@ static int setup_core_pattern(char **core_pattern_, bool *changed_) goto out; } - ret = fread(core_pattern, 1, PATH_MAX, f); + ret = fread(core_pattern, 1, PATH_MAX - 1, f); fclose(f); if (!ret) { perror("Error reading core_pattern file"); @@ -391,6 +391,8 @@ static int setup_core_pattern(char **core_pattern_, bool *changed_) goto out; } + core_pattern[ret] = '\0'; + /* Check whether we can predict the name of the core file. */ if (!strcmp(core_pattern, "core") || !strcmp(core_pattern, "core.%p")) *changed_ = false; |