aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/funcs.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-12-06 09:15:04 +0800
committerGitHub <noreply@github.com>2022-12-06 09:15:04 +0800
commit5199c333a072933d6a2bb8b9e99076761da7396a (patch)
tree95b9cc0437f348da67f77c3a7a76a9a608053730 /src/nvim/eval/funcs.c
parent54a1cc0ab0ad5cfad1f7c7b95ac4636ba6d5ee14 (diff)
downloadrneovim-5199c333a072933d6a2bb8b9e99076761da7396a.tar.gz
rneovim-5199c333a072933d6a2bb8b9e99076761da7396a.tar.bz2
rneovim-5199c333a072933d6a2bb8b9e99076761da7396a.zip
vim-patch:9.0.1015: without /dev/urandom srand() seed is too predictable (#21303)
Problem: Without /dev/urandom srand() seed is too predictable. Solution: Use micro seconds and XOR with process ID. (Yasuhiro Matsumoto, closes vim/vim#11656) https://github.com/vim/vim/commit/f0a9c004825ab686270ee57260652cce25e61049 Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r--src/nvim/eval/funcs.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index ec62c583a6..017e8e502c 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -5145,10 +5145,11 @@ static void init_srand(uint32_t *const x)
}
}
if (dev_urandom_state != OK) {
- // Reading /dev/urandom doesn't work, fall back to time().
+ // Reading /dev/urandom doesn't work, fall back to os_hrtime() XOR with process ID
#endif
// uncrustify:off
- *x = (uint32_t)time(NULL);
+ *x = (uint32_t)os_hrtime();
+ *x ^= (uint32_t)os_get_pid();
#ifndef MSWIN
}
#endif