summaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests
diff options
context:
space:
mode:
authorBenjamin Gray <bgray@linux.ibm.com>2022-11-28 15:19:43 +1100
committerMichael Ellerman <mpe@ellerman.id.au>2022-12-02 18:04:27 +1100
commit94ba4f2c33f42dae7813dc169a177e922a39560c (patch)
tree575b97fcb0ebaa8db09dfff603b7f91634892535 /tools/testing/selftests
parentaecfd680099ba518c34dff2941017c5aa97def52 (diff)
downloadlinux-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/testing/selftests')
-rw-r--r--tools/testing/selftests/powerpc/ptrace/core-pkey.c4
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;