Skip to content
Snippets Groups Projects
Commit 44f343be authored by David CARLIER's avatar David CARLIER
Browse files

explicit_bzero implementation proposal

parent 0646140d
No related branches found
No related tags found
No related merge requests found
//! 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 {
......
......@@ -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);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment