1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Copyright (c) 2017 FUJITSU LIMITED 4 * Author: Guangwen Feng <fenggw-fnst@cn.fujitsu.com> 5 */ 6 7/* 8 * Test for CVE-2017-2618, this regression test can crash 9 * the buggy kernel, and the bug was fixed in: 10 * 11 * commit 0c461cb727d146c9ef2d3e86214f498b78b7d125 12 * Author: Stephen Smalley <sds@tycho.nsa.gov> 13 * Date: Tue Jan 31 11:54:04 2017 -0500 14 * 15 * selinux: fix off-by-one in setprocattr 16 */ 17 18#include <errno.h> 19#include <stdlib.h> 20#include <unistd.h> 21#include "tst_test.h" 22 23#define LOOPS 100 24#define PATH_ATTRFS "/proc/self/attr/fscreate" 25 26static void setup(void) 27{ 28 if (access(PATH_ATTRFS, F_OK)) 29 tst_brk(TCONF, "%s does not exist", PATH_ATTRFS); 30} 31 32static void do_test(void) 33{ 34 int i, fd; 35 36 for (i = 0; i < LOOPS; i++) { 37 if (!SAFE_FORK()) { 38 fd = SAFE_OPEN(PATH_ATTRFS, O_WRONLY); 39 write(fd, "\n", 1); 40 SAFE_CLOSE(fd); 41 exit(0); 42 } 43 44 tst_reap_children(); 45 } 46 47 tst_res(TPASS, "Bug not reproduced"); 48} 49 50static struct tst_test test = { 51 .forks_child = 1, 52 .setup = setup, 53 .test_all = do_test, 54 .tags = (const struct tst_tag[]) { 55 {"linux-git", "0c461cb727d1"}, 56 {"CVE", "2017-2618"}, 57 {} 58 } 59}; 60