From 9dd0cf5370913d0daec776354f0360a84c93640a Mon Sep 17 00:00:00 2001 From: thorpej Date: Sat, 6 Jun 2020 18:11:21 +0000 Subject: [PATCH] Add a test case to ensure that _lwp_create() fails with the expected error code when a bad new-lwp-id pointer is passed. --- tests/lib/libc/sys/t_lwp_create.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/tests/lib/libc/sys/t_lwp_create.c b/tests/lib/libc/sys/t_lwp_create.c index 02545fe14869..fa00fa764ea3 100644 --- a/tests/lib/libc/sys/t_lwp_create.c +++ b/tests/lib/libc/sys/t_lwp_create.c @@ -1,4 +1,4 @@ -/* $NetBSD: t_lwp_create.c,v 1.2 2012/05/22 09:23:39 martin Exp $ */ +/* $NetBSD: t_lwp_create.c,v 1.3 2020/06/06 18:11:21 thorpej Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -119,6 +119,30 @@ ATF_TC_BODY(lwp_create_works, tc) ATF_REQUIRE(lid == the_lwp_id); } +ATF_TC(lwp_create_bad_lid_ptr); +ATF_TC_HEAD(lwp_create_bad_lid_ptr, tc) +{ + atf_tc_set_md_var(tc, "descr", + "Verify _lwp_create() fails as expected with bad lid pointer"); +} + +ATF_TC_BODY(lwp_create_bad_lid_ptr, tc) +{ + ucontext_t uc; + int error; + int serrno; + void *stack; + static const size_t ssize = 16*1024; + + stack = malloc(ssize); + _lwp_makecontext(&uc, lwp_main_func, NULL, NULL, stack, ssize); + + error = _lwp_create(&uc, 0, NULL); + serrno = errno; + ATF_REQUIRE(error == -1); + ATF_REQUIRE(serrno == EFAULT); +} + INVALID_UCONTEXT(generic, no_uc_cpu, "not setting cpu registers") uc->uc_flags &= ~_UC_CPU; } @@ -206,6 +230,7 @@ INVALID_UCONTEXT(vax, psl_cm, "setting CM bit in psl") ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, lwp_create_works); + ATF_TP_ADD_TC(tp, lwp_create_bad_lid_ptr); ATF_TP_ADD_TC(tp, lwp_create_generic_fail_no_uc_cpu); #ifdef __alpha__ ATF_TP_ADD_TC(tp, lwp_create_alpha_fail_pslset);