From a31584cdef7e027338262871cd80531b20693f3d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 21:28:05 -0600 Subject: [PATCH] Fix dangling pointer with empty scandir --- src/header/dirent/mod.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/header/dirent/mod.rs b/src/header/dirent/mod.rs index c8ee58082a..e1a196a035 100644 --- a/src/header/dirent/mod.rs +++ b/src/header/dirent/mod.rs @@ -270,7 +270,12 @@ pub unsafe extern "C" fn scandir( -1 } else { unsafe { - *namelist = vec.leak(); + // Empty CVecs use a dangling pointer which cannot be freed, return null instead + if vec.is_empty() { + *namelist = ptr::null_mut(); + } else { + *namelist = vec.leak(); + } } platform::ERRNO.set(old_errno);