mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 10:25:08 +00:00
LibC: Add explicit_bzero()
This is a variant of bzero() that is guaranteed to not get optimized away by the compiler. Useful for clearing out sensitive data.
This commit is contained in:
parent
4a83a37f79
commit
9a842ec419
2 changed files with 8 additions and 0 deletions
|
@ -476,4 +476,11 @@ size_t strxfrm(char* dest, const char* src, size_t n)
|
||||||
dest[i] = '\0';
|
dest[i] = '\0';
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void explicit_bzero(void* ptr, size_t size)
|
||||||
|
{
|
||||||
|
memset(ptr, 0, size);
|
||||||
|
asm volatile("" ::
|
||||||
|
: "memory");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ void* memchr(const void*, int c, size_t);
|
||||||
const void* memmem(const void* haystack, size_t, const void* needle, size_t);
|
const void* memmem(const void* haystack, size_t, const void* needle, size_t);
|
||||||
|
|
||||||
void* memset(void*, int, size_t);
|
void* memset(void*, int, size_t);
|
||||||
|
void explicit_bzero(void*, size_t) __attribute__((nonnull(1)));
|
||||||
|
|
||||||
__attribute__((malloc)) char* strdup(const char*);
|
__attribute__((malloc)) char* strdup(const char*);
|
||||||
__attribute__((malloc)) char* strndup(const char*, size_t);
|
__attribute__((malloc)) char* strndup(const char*, size_t);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue