[LTP] [PATCH v16 2/2] open16: allow restricted O_CREAT of FIFOs and regular files

Petr Vorel pvorel@suse.cz
Thu Oct 22 17:44:36 CEST 2026


Hi Wei,

...
> +static void verify_open(unsigned int n)
> +{
> +	struct tcase *tc = &tcases[n];
> +
> +	SAFE_FILE_PRINTF(PATH_FS_PROTECTED_REGULAR, "%u", n);
> +	SAFE_FILE_PRINTF(PATH_FS_PROTECTED_FIFOS, "%u", n);
> +
> +	if (tc->owner_uid != (uid_t)-1 || tc->use_nobody_gid) {
> +		gid_t gid = tc->use_nobody_gid ? gid1 : 0;
> +
> +		SAFE_CHOWN(DIR, tc->owner_uid, gid);
> +	}
> +
> +	if (tc->dir_mode)
> +		SAFE_CHMOD(DIR, tc->dir_mode);
> +
> +	if (SAFE_FORK())
> +		return;
> +
> +	SAFE_SETGID(gid1);
> +	SAFE_SETUID(uid2);
> +
> +	TST_EXP_FD_OR_FAIL(openat(dir_fd, TEST_FILE, O_RDWR | O_CREAT, 0777),
> +			   tc->exp_errno, "openat %s (sysctl_val=%u)", TEST_FILE, n);
> +	if (TST_RET != -1)
> +		SAFE_CLOSE(TST_RET);
> +
> +	TST_EXP_FD_OR_FAIL(open(TEST_FIFO_PATH, O_RDWR | O_CREAT, 0777),
> +			   tc->exp_errno, "open %s (sysctl_val=%u)", TEST_FIFO, n);
> +	if (TST_RET != -1)
> +		SAFE_CLOSE(TST_RET);
> +
> +	exit(0);

Do we need this explicit exit?

The rest LGTM.
Reviewed-by: Petr Vorel <pvorel@suse.cz>

Kind regards,
Petr


More information about the ltp mailing list