aboutsummaryrefslogtreecommitdiff
path: root/testcases/kernel/syscalls/keyctl/keyctl05.c
diff options
context:
space:
mode:
Diffstat (limited to 'testcases/kernel/syscalls/keyctl/keyctl05.c')
-rw-r--r--testcases/kernel/syscalls/keyctl/keyctl05.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/testcases/kernel/syscalls/keyctl/keyctl05.c b/testcases/kernel/syscalls/keyctl/keyctl05.c
index 7d7c076c0..0ad106774 100644
--- a/testcases/kernel/syscalls/keyctl/keyctl05.c
+++ b/testcases/kernel/syscalls/keyctl/keyctl05.c
@@ -1,9 +1,12 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (c) 2017 Google, Inc.
+ * Copyright (c) Linux Test Project, 2017-2024
*/
-/*
+/*\
+ * [Description]
+ *
* Regression test for commit 63a0b0509e70 ("KEYS: fix freeing uninitialized
* memory in key_update()"). Try to reproduce the crash in two different ways:
*
@@ -31,6 +34,8 @@
#include "tst_test.h"
#include "lapi/keyctl.h"
+#define MODULE "dns_resolver"
+
/*
* A valid payload for the "asymmetric" key type. This is an x509 certificate
* in DER format, generated using:
@@ -190,6 +195,9 @@ static void test_update_setperm_race(void)
static void setup(void)
{
+ /* There is no way to trigger automatic dns_resolver module loading. */
+ tst_cmd((const char*[]){"modprobe", MODULE, NULL}, NULL, NULL, 0);
+
fips_enabled = tst_fips_enabled();
}
@@ -198,8 +206,12 @@ static void do_test(unsigned int i)
/*
* We need to pass check in dns_resolver_preparse(),
* give it dummy server list request.
+ * From v6.8-rc1 commit acc657692aed438e9931438f8c923b2b107aebf9:
+ * the incoming data for add_key() sysdall should be not less than 6
+ * bytes, because struct dns_server_list_v1_header is 6 bytes.
+ * The minimum payload will be tested here for boundary testing.
*/
- static char dns_res_payload[] = { 0x00, 0x00, 0x01, 0xff, 0x00 };
+ static char dns_res_payload[] = { 0x00, 0x00, 0x01, 0xff, 0x00, 0x00 };
switch (i) {
case 0:
@@ -207,7 +219,7 @@ static void do_test(unsigned int i)
x509_cert, sizeof(x509_cert));
break;
case 1:
- test_update_nonupdatable("dns_resolver", dns_res_payload,
+ test_update_nonupdatable(MODULE, dns_res_payload,
sizeof(dns_res_payload));
break;
case 2:
@@ -217,12 +229,14 @@ static void do_test(unsigned int i)
}
static struct tst_test test = {
+ .needs_root = 1,
.tcnt = 3,
.setup = setup,
.test = do_test,
.forks_child = 1,
.tags = (const struct tst_tag[]) {
{"linux-git", "63a0b0509e70"},
+ {"linux-git", "acc657692aed"},
{}
}
};