1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Copyright (c) 2019 FUJITSU LIMITED. All rights reserved. 4 * Author: Yang Xu <xuyang2018.jy@cn.fujitsu.com> 5 */ 6#ifndef PRCTL06_H 7#define PRCTL06_H 8 9#include <errno.h> 10#include <stdio.h> 11#include <stdlib.h> 12#include <sys/prctl.h> 13#include <pwd.h> 14#include <sys/types.h> 15#include <unistd.h> 16#include <lapi/prctl.h> 17#include "tst_test.h" 18 19#define PROC_STATUS "/proc/self/status" 20#define MNTPOINT "mntpoint" 21#define TESTBIN "prctl06_execve" 22#define TEST_REL_BIN_DIR MNTPOINT"/" 23#define BIN_PATH MNTPOINT"/"TESTBIN 24#define SUID_MODE (S_ISUID|S_ISGID|S_IXUSR|S_IXGRP|S_IXOTH) 25 26static void check_no_new_privs(int val, char *name, int flag) 27{ 28 TEST(prctl(PR_GET_NO_NEW_PRIVS, 0, 0, 0, 0)); 29 if (TST_RET == val) 30 tst_res(TPASS, 31 "%s prctl(PR_GET_NO_NEW_PRIVS) expected %d got %d", 32 name, val, val); 33 else 34 tst_res(TFAIL, 35 "%s prctl(PR_GET_NO_NEW_PRIVS) expected %d got %ld", 36 name, val, TST_RET); 37 if (flag) 38 TST_ASSERT_FILE_INT(PROC_STATUS, "NoNewPrivs:", val); 39} 40 41#endif 42