mirror of
git://anongit.mindrot.org/openssh.git
synced 2025-02-17 22:36:53 +00:00
simplify sshkey_prekey_alloc(); always use mmap
This commit is contained in:
parent
4442bbc2fc
commit
cbd3f034bb
27
sshkey.c
27
sshkey.c
@ -740,28 +740,25 @@ sshkey_sk_cleanup(struct sshkey *k)
|
|||||||
k->sk_key_handle = k->sk_reserved = NULL;
|
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
|
static int
|
||||||
sshkey_prekey_alloc(u_char **prekeyp, size_t len)
|
sshkey_prekey_alloc(u_char **prekeyp, size_t len)
|
||||||
{
|
{
|
||||||
u_char *prekey;
|
u_char *prekey;
|
||||||
|
|
||||||
*prekeyp = NULL;
|
*prekeyp = NULL;
|
||||||
#if defined(MAP_CONCEAL)
|
|
||||||
if ((prekey = mmap(NULL, len, PROT_READ|PROT_WRITE,
|
if ((prekey = mmap(NULL, len, PROT_READ|PROT_WRITE,
|
||||||
MAP_ANON|MAP_PRIVATE|MAP_CONCEAL, -1, 0)) == MAP_FAILED)
|
MAP_ANON|MAP_PRIVATE|PREKEY_MMAP_FLAG, -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)
|
|
||||||
return SSH_ERR_SYSTEM_ERROR;
|
return SSH_ERR_SYSTEM_ERROR;
|
||||||
|
#if defined(MADV_DONTDUMP) && !defined(MAP_CONCEAL) && !defined(MAP_NOCORE)
|
||||||
(void)madvise(prekey, len, MADV_DONTDUMP);
|
(void)madvise(prekey, len, MADV_DONTDUMP);
|
||||||
#else
|
|
||||||
if ((prekey = calloc(1, len)) == NULL)
|
|
||||||
return SSH_ERR_ALLOC_FAIL;
|
|
||||||
#endif
|
#endif
|
||||||
*prekeyp = prekey;
|
*prekeyp = prekey;
|
||||||
return 0;
|
return 0;
|
||||||
@ -772,11 +769,7 @@ sshkey_prekey_free(void *prekey, size_t len)
|
|||||||
{
|
{
|
||||||
if (prekey == NULL)
|
if (prekey == NULL)
|
||||||
return;
|
return;
|
||||||
#if defined(MAP_CONCEAL) || defined(MAP_NOCORE) || defined(MADV_DONTDUMP)
|
|
||||||
munmap(prekey, len);
|
munmap(prekey, len);
|
||||||
#else
|
|
||||||
freezero(prekey, len);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user