If name is NULL, a NULL pointer may be accessed in printf.
Signed-off-by: liuye liuye@kylinos.cn --- tools/testing/selftests/memfd/memfd_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/memfd/memfd_test.c b/tools/testing/selftests/memfd/memfd_test.c index c0c53451a16d..5b993924cc3f 100644 --- a/tools/testing/selftests/memfd/memfd_test.c +++ b/tools/testing/selftests/memfd/memfd_test.c @@ -171,7 +171,7 @@ static void mfd_fail_new(const char *name, unsigned int flags) r = sys_memfd_create(name, flags); if (r >= 0) { printf("memfd_create("%s", %u) succeeded, but failure expected\n", - name, flags); + name ? name : "NULL", flags); close(r); abort(); }
On Tue, 14 Jan 2025 11:21:15 +0800 liuye liuye@kylinos.cn wrote:
If name is NULL, a NULL pointer may be accessed in printf.
...
--- a/tools/testing/selftests/memfd/memfd_test.c +++ b/tools/testing/selftests/memfd/memfd_test.c @@ -171,7 +171,7 @@ static void mfd_fail_new(const char *name, unsigned int flags) r = sys_memfd_create(name, flags); if (r >= 0) { printf("memfd_create("%s", %u) succeeded, but failure expected\n",
name, flags);
close(r); abort();name ? name : "NULL", flags);
Well huh. I though printf() would emit "(null)" in this situation, but my super-sophisticated test case says "core dumped".
#include <stdio.h> #include <stdlib.h>
int main() { printf("%s\n", (char *)0); exit(0); }
On Tue, Jan 14, 2025 at 11:21:15AM +0800, liuye wrote:
If name is NULL, a NULL pointer may be accessed in printf.
Signed-off-by: liuye liuye@kylinos.cn
Reviewed-by: Lorenzo Stoakes lorenzo.stoakes@oracle.com
tools/testing/selftests/memfd/memfd_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/memfd/memfd_test.c b/tools/testing/selftests/memfd/memfd_test.c index c0c53451a16d..5b993924cc3f 100644 --- a/tools/testing/selftests/memfd/memfd_test.c +++ b/tools/testing/selftests/memfd/memfd_test.c @@ -171,7 +171,7 @@ static void mfd_fail_new(const char *name, unsigned int flags) r = sys_memfd_create(name, flags); if (r >= 0) { printf("memfd_create("%s", %u) succeeded, but failure expected\n",
name, flags);
name ? name : "NULL", flags);
Damn, I was going to say 'oh hey we never pass NULL' but in test_create() we explicitly... do. Good spot!
close(r); abort();
}
2.25.1
linux-kselftest-mirror@lists.linaro.org