explicit_bzero implementation proposal

This commit is contained in:
David Carlier
2021-06-05 18:49:25 +01:00
parent 0646140d99
commit 44f343bec8
2 changed files with 13 additions and 1 deletions
+9 -1
View File
@@ -1,5 +1,5 @@
//! strings implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xsh/strings.h.html
#![feature(llvm_asm)]
use core::ptr;
use crate::{
@@ -22,6 +22,14 @@ pub unsafe extern "C" fn bzero(dst: *mut c_void, n: size_t) {
ptr::write_bytes(dst as *mut u8, 0, n);
}
#[no_mangle]
pub unsafe extern "C" fn explicit_bzero(s: *mut c_void, n: size_t) {
for i in 0..n {
*(s as *mut u8).add(i) = 0 as u8;
}
llvm_asm!("" :: "r"(s) : "memory")
}
#[no_mangle]
pub extern "C" fn ffs(i: c_int) -> c_int {
if i == 0 {
+4
View File
@@ -40,4 +40,8 @@ int main(void) {
char* str = "hihih";
assert(index(str, 'i') == str + 1);
assert(rindex(str, 'i') == str + 3);
char buf[] = "password";
explicit_bzero(buf, sizeof(buf));
assert(buf[0] == 0);
}