diff mbox series

selftests/memfd/memfd_test: Fix possible NULL pointer dereference

Message ID 20250114032115.58638-1-liuye@kylinos.cn (mailing list archive)
State New
Headers show
Series selftests/memfd/memfd_test: Fix possible NULL pointer dereference | expand

Commit Message

liuye Jan. 14, 2025, 3:21 a.m. UTC
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(-)

Comments

Andrew Morton Jan. 14, 2025, 4:13 a.m. UTC | #1
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);
> +		       name ? name : "NULL", flags);
>  		close(r);
>  		abort();

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);
}
Lorenzo Stoakes Jan. 14, 2025, 11:10 a.m. UTC | #2
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
>
diff mbox series

Patch

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();
 	}