diff mbox series

selftests/seccomp: Accept any valid fd in user_notification_addfd

Message ID 20210128161721.99150-1-seth.forshee@canonical.com
State Accepted
Commit e0c0840a46db9d50ba7391082d665d74f320c39f
Headers show
Series selftests/seccomp: Accept any valid fd in user_notification_addfd | expand

Commit Message

Seth Forshee Jan. 28, 2021, 4:17 p.m. UTC
This test expects fds to have specific values, which works fine
when the test is run standalone. However, the kselftest runner
consumes a couple of extra fds for redirection when running
tests, so the test fails when run via kselftest.

Change the test to pass on any valid fd number.

Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
---
 tools/testing/selftests/seccomp/seccomp_bpf.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

Comments

Shuah Khan Feb. 9, 2021, 12:13 a.m. UTC | #1
On 1/28/21 9:17 AM, Seth Forshee wrote:
> This test expects fds to have specific values, which works fine

> when the test is run standalone. However, the kselftest runner

> consumes a couple of extra fds for redirection when running

> tests, so the test fails when run via kselftest.

> 

> Change the test to pass on any valid fd number.

> 

> Signed-off-by: Seth Forshee <seth.forshee@canonical.com>

> ---

>   tools/testing/selftests/seccomp/seccomp_bpf.c | 8 ++------

>   1 file changed, 2 insertions(+), 6 deletions(-)

> 

> diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c

> index 26c72f2b61b1..9338df6f4ca8 100644

> --- a/tools/testing/selftests/seccomp/seccomp_bpf.c

> +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c

> @@ -4019,18 +4019,14 @@ TEST(user_notification_addfd)

>   

>   	/* Verify we can set an arbitrary remote fd */

>   	fd = ioctl(listener, SECCOMP_IOCTL_NOTIF_ADDFD, &addfd);

> -	/*

> -	 * The child has fds 0(stdin), 1(stdout), 2(stderr), 3(memfd),

> -	 * 4(listener), so the newly allocated fd should be 5.

> -	 */

> -	EXPECT_EQ(fd, 5);

> +	EXPECT_GE(fd, 0);

>   	EXPECT_EQ(filecmp(getpid(), pid, memfd, fd), 0);

>   

>   	/* Verify we can set an arbitrary remote fd with large size */

>   	memset(&big, 0x0, sizeof(big));

>   	big.addfd = addfd;

>   	fd = ioctl(listener, SECCOMP_IOCTL_NOTIF_ADDFD_BIG, &big);

> -	EXPECT_EQ(fd, 6);

> +	EXPECT_GE(fd, 0);

>   

>   	/* Verify we can set a specific remote fd */

>   	addfd.newfd = 42;

> 


Here is my Ack if Kees wants to take it through seccomp.

Acked-by: Shuah Khan <skhan@linuxfoundation.org>


thanks,
-- Shuah
Kees Cook Feb. 10, 2021, 12:33 a.m. UTC | #2
On Thu, Jan 28, 2021 at 10:17:21AM -0600, Seth Forshee wrote:
> This test expects fds to have specific values, which works fine

> when the test is run standalone. However, the kselftest runner

> consumes a couple of extra fds for redirection when running

> tests, so the test fails when run via kselftest.

> 

> Change the test to pass on any valid fd number.

> 

> Signed-off-by: Seth Forshee <seth.forshee@canonical.com>


Thanks!

Acked-by: Kees Cook <keescook@chromium.org>


I'll snag this if Shuah doesn't first. :)

-Kees

> ---

>  tools/testing/selftests/seccomp/seccomp_bpf.c | 8 ++------

>  1 file changed, 2 insertions(+), 6 deletions(-)

> 

> diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c

> index 26c72f2b61b1..9338df6f4ca8 100644

> --- a/tools/testing/selftests/seccomp/seccomp_bpf.c

> +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c

> @@ -4019,18 +4019,14 @@ TEST(user_notification_addfd)

>  

>  	/* Verify we can set an arbitrary remote fd */

>  	fd = ioctl(listener, SECCOMP_IOCTL_NOTIF_ADDFD, &addfd);

> -	/*

> -	 * The child has fds 0(stdin), 1(stdout), 2(stderr), 3(memfd),

> -	 * 4(listener), so the newly allocated fd should be 5.

> -	 */

> -	EXPECT_EQ(fd, 5);

> +	EXPECT_GE(fd, 0);

>  	EXPECT_EQ(filecmp(getpid(), pid, memfd, fd), 0);

>  

>  	/* Verify we can set an arbitrary remote fd with large size */

>  	memset(&big, 0x0, sizeof(big));

>  	big.addfd = addfd;

>  	fd = ioctl(listener, SECCOMP_IOCTL_NOTIF_ADDFD_BIG, &big);

> -	EXPECT_EQ(fd, 6);

> +	EXPECT_GE(fd, 0);

>  

>  	/* Verify we can set a specific remote fd */

>  	addfd.newfd = 42;

> -- 

> 2.29.2

> 


-- 
Kees Cook
Shuah Khan Feb. 10, 2021, 12:35 a.m. UTC | #3
On 2/9/21 5:33 PM, Kees Cook wrote:
> On Thu, Jan 28, 2021 at 10:17:21AM -0600, Seth Forshee wrote:

>> This test expects fds to have specific values, which works fine

>> when the test is run standalone. However, the kselftest runner

>> consumes a couple of extra fds for redirection when running

>> tests, so the test fails when run via kselftest.

>>

>> Change the test to pass on any valid fd number.

>>

>> Signed-off-by: Seth Forshee <seth.forshee@canonical.com>

> 

> Thanks!

> 

> Acked-by: Kees Cook <keescook@chromium.org>

> 

> I'll snag this if Shuah doesn't first. :)

> 


I will apply this. I have several queued for 5.12-rc1 anyway.

thanks,
-- Shuah
diff mbox series

Patch

diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c
index 26c72f2b61b1..9338df6f4ca8 100644
--- a/tools/testing/selftests/seccomp/seccomp_bpf.c
+++ b/tools/testing/selftests/seccomp/seccomp_bpf.c
@@ -4019,18 +4019,14 @@  TEST(user_notification_addfd)
 
 	/* Verify we can set an arbitrary remote fd */
 	fd = ioctl(listener, SECCOMP_IOCTL_NOTIF_ADDFD, &addfd);
-	/*
-	 * The child has fds 0(stdin), 1(stdout), 2(stderr), 3(memfd),
-	 * 4(listener), so the newly allocated fd should be 5.
-	 */
-	EXPECT_EQ(fd, 5);
+	EXPECT_GE(fd, 0);
 	EXPECT_EQ(filecmp(getpid(), pid, memfd, fd), 0);
 
 	/* Verify we can set an arbitrary remote fd with large size */
 	memset(&big, 0x0, sizeof(big));
 	big.addfd = addfd;
 	fd = ioctl(listener, SECCOMP_IOCTL_NOTIF_ADDFD_BIG, &big);
-	EXPECT_EQ(fd, 6);
+	EXPECT_GE(fd, 0);
 
 	/* Verify we can set a specific remote fd */
 	addfd.newfd = 42;