diff options
author | Mike Pall <mike> | 2020-06-15 12:21:05 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2020-06-15 12:21:05 +0200 |
commit | a44f53acf53603e7d9b88352de035b1804be4e88 (patch) | |
tree | 940e202e0ca56e0df42860fbc89326e72cdc148d /src/lj_prng.h | |
parent | 34e53736c6ed90dc56357aff22009e88b443ecfd (diff) | |
download | luajit-a44f53acf53603e7d9b88352de035b1804be4e88.tar.gz luajit-a44f53acf53603e7d9b88352de035b1804be4e88.tar.bz2 luajit-a44f53acf53603e7d9b88352de035b1804be4e88.zip |
Use a securely seeded global PRNG for the VM.
It's not 2005 anymore.
Diffstat (limited to 'src/lj_prng.h')
-rw-r--r-- | src/lj_prng.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/lj_prng.h b/src/lj_prng.h new file mode 100644 index 00000000..40c34a71 --- /dev/null +++ b/src/lj_prng.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | ** Pseudo-random number generation. | ||
3 | ** Copyright (C) 2005-2020 Mike Pall. See Copyright Notice in luajit.h | ||
4 | */ | ||
5 | |||
6 | #ifndef _LJ_PRNG_H | ||
7 | #define _LJ_PRNG_H | ||
8 | |||
9 | #include "lj_def.h" | ||
10 | |||
11 | LJ_FUNC int LJ_FASTCALL lj_prng_seed_secure(PRNGState *rs); | ||
12 | LJ_FUNC uint64_t LJ_FASTCALL lj_prng_u64(PRNGState *rs); | ||
13 | LJ_FUNC uint64_t LJ_FASTCALL lj_prng_u64d(PRNGState *rs); | ||
14 | |||
15 | /* This is just the precomputed result of lib_math.c:random_seed(rs, 0.0). */ | ||
16 | static LJ_AINLINE void lj_prng_seed_fixed(PRNGState *rs) | ||
17 | { | ||
18 | rs->u[0] = U64x(a0d27757,0a345b8c); | ||
19 | rs->u[1] = U64x(764a296c,5d4aa64f); | ||
20 | rs->u[2] = U64x(51220704,070adeaa); | ||
21 | rs->u[3] = U64x(2a2717b5,a7b7b927); | ||
22 | } | ||
23 | |||
24 | #endif | ||