From 42f3411337b764cd134269fbf2fbdfe43c63a647 Mon Sep 17 00:00:00 2001 From: Marsman1996 Date: Wed, 4 Sep 2024 15:34:56 +0800 Subject: [PATCH] Fix index out of bound when `key` of `semget` too large --- kernel/src/ipc/semaphore/system_v/sem_set.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/src/ipc/semaphore/system_v/sem_set.rs b/kernel/src/ipc/semaphore/system_v/sem_set.rs index 3a6859611..fdbc4dfb4 100644 --- a/kernel/src/ipc/semaphore/system_v/sem_set.rs +++ b/kernel/src/ipc/semaphore/system_v/sem_set.rs @@ -235,6 +235,9 @@ pub fn create_sem_set_with_id( ) -> Result<()> { debug_assert!(nsems <= SEMMSL); debug_assert!(id > 0); + if id as usize > SEMMNI { + return_errno_with_message!(Errno::ENOENT, "id larger than SEMMNI"); + } ID_ALLOCATOR .get()