diff options
author | Damien Miller <djm@mindrot.org> | 2024-08-21 01:18:29 +0200 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2024-08-21 01:22:28 +0200 |
commit | cbd3f034bbf7853618fac99d7d868a2250154ea7 (patch) | |
tree | 6bf274be846a469f5bfd579a690e275029691b77 /sshkey.c | |
parent | upstream: Merge AEAD test into main test loop. (diff) | |
download | openssh-cbd3f034bbf7853618fac99d7d868a2250154ea7.tar.xz openssh-cbd3f034bbf7853618fac99d7d868a2250154ea7.zip |
simplify sshkey_prekey_alloc(); always use mmap
Diffstat (limited to '')
-rw-r--r-- | sshkey.c | 27 |
1 files changed, 10 insertions, 17 deletions
@@ -740,28 +740,25 @@ sshkey_sk_cleanup(struct sshkey *k) k->sk_key_handle = k->sk_reserved = NULL; } +#if defined(MAP_CONCEAL) +# define PREKEY_MMAP_FLAG MAP_CONCEAL +#elif defined(MAP_NOCORE) +# define PREKEY_MMAP_FLAG MAP_NOCORE +#else +# define PREKEY_MMAP_FLAG 0 +#endif + static int sshkey_prekey_alloc(u_char **prekeyp, size_t len) { u_char *prekey; *prekeyp = NULL; -#if defined(MAP_CONCEAL) if ((prekey = mmap(NULL, len, PROT_READ|PROT_WRITE, - MAP_ANON|MAP_PRIVATE|MAP_CONCEAL, -1, 0)) == MAP_FAILED) - return SSH_ERR_SYSTEM_ERROR; -#elif defined(MAP_NOCORE) - if ((prekey = mmap(NULL, len, PROT_READ|PROT_WRITE, - MAP_ANON|MAP_PRIVATE|MAP_NOCORE, -1, 0)) == MAP_FAILED) - return SSH_ERR_SYSTEM_ERROR; -#elif defined(MADV_DONTDUMP) - if ((prekey = mmap(NULL, len, PROT_READ|PROT_WRITE, - MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) + MAP_ANON|MAP_PRIVATE|PREKEY_MMAP_FLAG, -1, 0)) == MAP_FAILED) return SSH_ERR_SYSTEM_ERROR; +#if defined(MADV_DONTDUMP) && !defined(MAP_CONCEAL) && !defined(MAP_NOCORE) (void)madvise(prekey, len, MADV_DONTDUMP); -#else - if ((prekey = calloc(1, len)) == NULL) - return SSH_ERR_ALLOC_FAIL; #endif *prekeyp = prekey; return 0; @@ -772,11 +769,7 @@ sshkey_prekey_free(void *prekey, size_t len) { if (prekey == NULL) return; -#if defined(MAP_CONCEAL) || defined(MAP_NOCORE) || defined(MADV_DONTDUMP) munmap(prekey, len); -#else - freezero(prekey, len); -#endif } static void |