libroot: Use getentropy to initialize the stack protector.
Now that it's in libroot, we don't need to invoke the syscall directly.
This commit is contained in:
@@ -8,9 +8,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#include <syscalls.h>
|
|
||||||
|
|
||||||
#include "private/system/random_defs.h"
|
|
||||||
#include "private/system/symbol_visibility.h"
|
#include "private/system/symbol_visibility.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -25,14 +23,8 @@ __init_stack_protector()
|
|||||||
if (__stack_chk_guard != 0)
|
if (__stack_chk_guard != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
struct random_get_entropy_args args;
|
int status = getentropy(&__stack_chk_guard, sizeof(__stack_chk_guard));
|
||||||
args.buffer = &__stack_chk_guard;
|
if (status != 0) {
|
||||||
args.length = sizeof(__stack_chk_guard);
|
|
||||||
|
|
||||||
status_t status = _kern_generic_syscall(RANDOM_SYSCALLS, RANDOM_GET_ENTROPY,
|
|
||||||
&args, sizeof(args));
|
|
||||||
|
|
||||||
if (status != B_OK || args.length != sizeof(__stack_chk_guard)) {
|
|
||||||
unsigned char* p = (unsigned char *)&__stack_chk_guard;
|
unsigned char* p = (unsigned char *)&__stack_chk_guard;
|
||||||
p[0] = 0;
|
p[0] = 0;
|
||||||
p[1] = 0;
|
p[1] = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user