Skip to content

Commit 5d007eb

Browse files
authored
ci: add no-panic check for the custom backend (#517)
1 parent 140876b commit 5d007eb

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

.github/workflows/nopanic.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ jobs:
4747
- name: Check (rdrand.rs)
4848
run: ret=$(grep panic target/release/libgetrandom_wrapper.so; echo $?); [ $ret -eq 1 ]
4949

50+
- name: Build (custom.rs)
51+
env:
52+
RUSTFLAGS: -Dwarnings --cfg getrandom_backend="custom"
53+
run: cargo build --release
54+
- name: Check (custom.rs)
55+
run: ret=$(grep panic target/release/libgetrandom_wrapper.so; echo $?); [ $ret -eq 1 ]
56+
5057
- name: Build (wasi.rs, preview 1)
5158
run: cargo build --release --target wasm32-wasip1
5259
- name: Check (wasi.rs, preview 1)

nopanic_check/Cargo.toml

+6
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,9 @@ getrandom = { path = ".." }
1414

1515
[profile.release]
1616
panic = "abort"
17+
18+
[lints.rust.unexpected_cfgs]
19+
level = "warn"
20+
check-cfg = [
21+
'cfg(getrandom_backend, values("custom"))',
22+
]

nopanic_check/src/lib.rs

+12
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,15 @@ pub extern "C" fn getrandom_wrapper(buf_ptr: *mut u8, buf_len: usize) -> u32 {
1616
let res = getrandom::getrandom_uninit(buf).map(|_| ());
1717
unsafe { core::mem::transmute(res) }
1818
}
19+
20+
#[cfg(getrandom_backend = "custom")]
21+
#[no_mangle]
22+
unsafe extern "Rust" fn __getrandom_custom(
23+
dest: *mut u8,
24+
len: usize,
25+
) -> Result<(), getrandom::Error> {
26+
for i in 0..len {
27+
core::ptr::write(dest.add(i), i as u8);
28+
}
29+
Ok(())
30+
}

0 commit comments

Comments
 (0)