Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 73 lines 1.7 kB view raw
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Linux Security Module infrastructure tests 4 * Tests for the lsm_set_self_attr system call 5 * 6 * Copyright © 2022 Casey Schaufler <casey@schaufler-ca.com> 7 */ 8 9#define _GNU_SOURCE 10#include <linux/lsm.h> 11#include <string.h> 12#include <stdio.h> 13#include <unistd.h> 14#include <sys/types.h> 15#include "kselftest_harness.h" 16#include "common.h" 17 18TEST(ctx_null_lsm_set_self_attr) 19{ 20 ASSERT_EQ(-1, lsm_set_self_attr(LSM_ATTR_CURRENT, NULL, 21 sizeof(struct lsm_ctx), 0)); 22} 23 24TEST(size_too_small_lsm_set_self_attr) 25{ 26 const long page_size = sysconf(_SC_PAGESIZE); 27 struct lsm_ctx *ctx = calloc(page_size, 1); 28 __u32 size = page_size; 29 30 ASSERT_NE(NULL, ctx); 31 if (attr_lsm_count()) { 32 ASSERT_LE(1, lsm_get_self_attr(LSM_ATTR_CURRENT, ctx, &size, 33 0)); 34 } 35 ASSERT_EQ(-1, lsm_set_self_attr(LSM_ATTR_CURRENT, ctx, 1, 0)); 36 37 free(ctx); 38} 39 40TEST(flags_zero_lsm_set_self_attr) 41{ 42 const long page_size = sysconf(_SC_PAGESIZE); 43 struct lsm_ctx *ctx = calloc(page_size, 1); 44 __u32 size = page_size; 45 46 ASSERT_NE(NULL, ctx); 47 if (attr_lsm_count()) { 48 ASSERT_LE(1, lsm_get_self_attr(LSM_ATTR_CURRENT, ctx, &size, 49 0)); 50 } 51 ASSERT_EQ(-1, lsm_set_self_attr(LSM_ATTR_CURRENT, ctx, size, 1)); 52 53 free(ctx); 54} 55 56TEST(flags_overset_lsm_set_self_attr) 57{ 58 const long page_size = sysconf(_SC_PAGESIZE); 59 struct lsm_ctx *ctx = calloc(page_size, 1); 60 __u32 size = page_size; 61 62 ASSERT_NE(NULL, ctx); 63 if (attr_lsm_count()) { 64 ASSERT_LE(1, lsm_get_self_attr(LSM_ATTR_CURRENT, ctx, &size, 65 0)); 66 } 67 ASSERT_EQ(-1, lsm_set_self_attr(LSM_ATTR_CURRENT | LSM_ATTR_PREV, ctx, 68 size, 0)); 69 70 free(ctx); 71} 72 73TEST_HARNESS_MAIN