[LTP] [PATCH] waitid10: Fix when coredumps are piped

Richard Palethorpe rpalethorpe@suse.de
Mon Mar 21 16:17:55 CET 2022


Hello

Cyril Hrubis <chrubis@suse.cz> writes:

> When coredumps are piped into a stdin of a program (the core_pattern
> starts with '|') the RLIMIT_CORE limits are not enforced.
>
> This fixes the test expectation in the corner case that rlim_cur and
> rlim_max for RLIMIT_CORE are both set to 0 but the core pattern is set
> to dump core into a pipe where we previously assumed the core wouldn't
> be dumped.
>
> Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
> ---
>  testcases/kernel/syscalls/waitid/waitid10.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/testcases/kernel/syscalls/waitid/waitid10.c b/testcases/kernel/syscalls/waitid/waitid10.c
> index 869ef18bd..e75edd07e 100644
> --- a/testcases/kernel/syscalls/waitid/waitid10.c
> +++ b/testcases/kernel/syscalls/waitid/waitid10.c
> @@ -45,14 +45,17 @@ static void run(void)
>  static void setup(void)
>  {
>  	struct rlimit rlim;
> +	char c;
>  
>  	SAFE_GETRLIMIT(RLIMIT_CORE, &rlim);
> +	SAFE_FILE_SCANF("/proc/sys/kernel/core_pattern", "%c", &c);
>  
>  	if (rlim.rlim_cur)
>  		return;
>  
>  	if (!rlim.rlim_max) {
> -		core_dumps = 0;
> +		if (c != '|')
> +			core_dumps = 0;
>  		return;
>  	}
>  
> -- 
> 2.34.1

Reviewed-by: Richard Palethorpe <rpalethorpe@suse.com>

BTW I thought that division by zero actually just resulted in zero or
INT_MAX on some platforms? (e.g. ARM)

It's undefined behaviour, so I fail to see how this test has ever worked
on some architectures. Perhaps we should dereference a null/invalid
pointer instead?


-- 
Thank you,
Richard.


More information about the ltp mailing list