rust/library/alloc/src
Matthias Krüger bd3af53489
Rollup merge of #137714 - DiuDiu777:doc-fix, r=tgross35
Update safety documentation for `CString::from_ptr` and `str::from_boxed_utf8_unchecked`

## PR Description​
This PR addresses missing safety documentation for two APIs:

​**1. alloc::ffi::CStr::from_raw**​

- ​`Alias`: The pointer ​must not be aliased​ (accessed via other pointers) during the reconstructed CString's lifetime.
- `Owning`: Calling this function twice on the same pointer and creating two objects with overlapping lifetimes, introduces two alive owners of the same memory. This may result in a double-free.
- `Dangling`: The prior documentation required the pointer to originate from CString::into_raw, but this constraint is incomplete. A validly sourced pointer can also cause undefined behavior (UB) if it becomes dangling. A simple Poc for this situation:
```
use std::ffi::CString;
use std::os::raw::c_char;

fn create_dangling() -> *mut c_char {
    let local_ptr: *mut c_char = {
        let valid_data = CString::new("valid").unwrap();
        valid_data.into_raw()
    };

    unsafe {
        let _x = CString::from_raw(local_ptr);
    }
    local_ptr
}

fn main() {
    let dangling = create_dangling();
    unsafe {let _y = CString::from_raw(dangling);} // Cause UB!
}
```

​**2. alloc::str::from_boxed_utf8_unchecked**​

- `ValidStr`: Bytes must contain a ​valid UTF-8 sequence.
2025-04-27 11:54:57 +02:00
..
boxed library: Use size_of from the prelude instead of imported 2025-03-06 20:20:38 -08:00
collections Remove some unnecessary clones. 2025-04-24 11:12:34 +10:00
ffi Rollup merge of #137714 - DiuDiu777:doc-fix, r=tgross35 2025-04-27 11:54:57 +02:00
raw_vec Swap usize -> ptr transmute for strict_pov API 2025-03-26 21:41:11 +00:00
vec replace version placeholder 2025-04-09 12:29:59 +01:00
alloc.rs update cfgs 2025-04-09 12:29:59 +01:00
borrow.rs Fully test the alloc crate through alloctests 2025-03-07 19:11:13 +00:00
boxed.rs replace version placeholder 2025-04-09 12:29:59 +01:00
bstr.rs Fully test the alloc crate through alloctests 2025-03-07 19:11:13 +00:00
fmt.rs Fix typo in documentation 2025-04-12 22:26:38 +08:00
lib.miri.rs add 'x.py miri', and make it work for 'library/{core,alloc,std}' 2024-04-03 20:27:20 +02:00
lib.rs Speed up String::push and String::insert 2025-04-09 13:06:10 +03:00
macros.rs Fully test the alloc crate through alloctests 2025-03-07 19:11:13 +00:00
rc.rs fix copy typo 2025-03-10 16:46:18 +08:00
slice.rs Fully test the alloc crate through alloctests 2025-03-07 19:11:13 +00:00
str.rs Rollup merge of #137714 - DiuDiu777:doc-fix, r=tgross35 2025-04-27 11:54:57 +02:00
string.rs Auto merge of #139279 - BoxyUwU:bump-boostrap, r=jieyouxu 2025-04-10 00:43:25 +00:00
sync.rs Remove PartialEq::ne for UniqueArc 2025-03-22 15:14:49 +08:00
task.rs Stabilize noop_waker 2024-12-05 14:14:17 -08:00