diff options
| author | Werner Koch <[email protected]> | 1998-09-18 15:24:53 +0000 |
|---|---|---|
| committer | Werner Koch <[email protected]> | 1998-09-18 15:24:53 +0000 |
| commit | b4aeef458c51b9debd394592e76b93cc6b00e0a2 (patch) | |
| tree | e87818f5c15e12189f5fc054faf6d09e07e3d120 /util/secmem.c | |
| parent | Michael Roth has released is des impl. (diff) | |
| download | gnupg-b4aeef458c51b9debd394592e76b93cc6b00e0a2.tar.gz gnupg-b4aeef458c51b9debd394592e76b93cc6b00e0a2.zip | |
.
Diffstat (limited to 'util/secmem.c')
| -rw-r--r-- | util/secmem.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/util/secmem.c b/util/secmem.c index 44df08b16..e75a13512 100644 --- a/util/secmem.c +++ b/util/secmem.c @@ -75,11 +75,22 @@ lock_pool( void *p, size_t n ) uid_t uid; int err; + uid = getuid(); + + #ifdef HAVE_BROKEN_MLOCK + if( uid ) + err = EPERM; + else { + err = mlock( p, n ); + if( err && errno ) + err = errno; + } + #else err = mlock( p, n ); if( err && errno ) err = errno; + #endif - uid = getuid(); if( uid && !geteuid() ) { if( setuid( uid ) ) log_fatal("failed to reset uid: %s\n", strerror(errno)); |
