diff options
author | Werner Koch <wk@gnupg.org> | 2013-04-18 14:40:43 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2013-05-22 17:59:29 +0200 |
commit | 2b8014af202c9e0f7619f7a4377f5eb752235220 (patch) | |
tree | 16f4498cfa6823f13d00467444fc856c2896e799 /src/global.c | |
parent | 05b3e2dda61d3d532a7f1ffd2487a85ed1c4f3ab (diff) | |
download | libgcrypt-2b8014af202c9e0f7619f7a4377f5eb752235220.tar.gz |
Add control commands to disable mlock and setuid dropping.
* src/gcrypt.h.in (GCRYCTL_DISABLE_LOCKED_SECMEM): New.
(GCRYCTL_DISABLE_PRIV_DROP): New.
* src/global.c (_gcry_vcontrol): Implement them.
* src/secmem.h (GCRY_SECMEM_FLAG_NO_MLOCK): New.
(GCRY_SECMEM_FLAG_NO_PRIV_DROP): New.
* src/secmem.c (no_mlock, no_priv_drop): New.
(_gcry_secmem_set_flags, _gcry_secmem_get_flags): Set and get them.
(lock_pool): Handle no_mlock and no_priv_drop.
Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'src/global.c')
-rw-r--r-- | src/global.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/global.c b/src/global.c index f8738975..a6fe9804 100644 --- a/src/global.c +++ b/src/global.c @@ -2,6 +2,7 @@ * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 * 2004, 2005, 2006, 2008, 2011, * 2012 Free Software Foundation, Inc. + * Copyright (C) 2013 g10 Code GmbH * * This file is part of Libgcrypt. * @@ -687,6 +688,18 @@ _gcry_vcontrol (enum gcry_ctl_cmds cmd, va_list arg_ptr) } break; + case GCRYCTL_DISABLE_LOCKED_SECMEM: + _gcry_set_preferred_rng_type (0); + _gcry_secmem_set_flags ((_gcry_secmem_get_flags () + | GCRY_SECMEM_FLAG_NO_MLOCK)); + break; + + case GCRYCTL_DISABLE_PRIV_DROP: + _gcry_set_preferred_rng_type (0); + _gcry_secmem_set_flags ((_gcry_secmem_get_flags () + | GCRY_SECMEM_FLAG_NO_PRIV_DROP)); + break; + default: _gcry_set_preferred_rng_type (0); err = GPG_ERR_INV_OP; |