diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/build-data/os/aix.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/android.txt | 3 | ||||
-rw-r--r-- | src/build-data/os/darwin.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/dragonfly.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/freebsd.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/hpux.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/hurd.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/ios.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/linux.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/netbsd.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/openbsd.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/qnx.txt | 1 | ||||
-rw-r--r-- | src/build-data/os/solaris.txt | 1 | ||||
-rw-r--r-- | src/lib/utils/os_utils.cpp | 6 |
14 files changed, 20 insertions, 1 deletions
diff --git a/src/build-data/os/aix.txt b/src/build-data/os/aix.txt index caf94fdd4..be5a8717e 100644 --- a/src/build-data/os/aix.txt +++ b/src/build-data/os/aix.txt @@ -5,6 +5,7 @@ use_stack_protector no <target_features> posix1 +posix_mlock clock_gettime dev_random proc_fs diff --git a/src/build-data/os/android.txt b/src/build-data/os/android.txt index b45287b54..3b0b0c09a 100644 --- a/src/build-data/os/android.txt +++ b/src/build-data/os/android.txt @@ -3,9 +3,10 @@ soname_suffix "so" <target_features> posix1 +posix_mlock +clock_gettime dev_random -clock_gettime # getauxval is available in Android NDK for min API 18 and in Crystax NDK # for all min API levels. Use --without-os-feature=getauxval to disable diff --git a/src/build-data/os/darwin.txt b/src/build-data/os/darwin.txt index e32a5c4c6..056d535e7 100644 --- a/src/build-data/os/darwin.txt +++ b/src/build-data/os/darwin.txt @@ -11,6 +11,7 @@ doc_dir doc <target_features> posix1 +posix_mlock arc4random dev_random security_framework diff --git a/src/build-data/os/dragonfly.txt b/src/build-data/os/dragonfly.txt index 257b2ef6b..6cf794948 100644 --- a/src/build-data/os/dragonfly.txt +++ b/src/build-data/os/dragonfly.txt @@ -3,6 +3,7 @@ soname_suffix "so" <target_features> posix1 +posix_mlock clock_gettime proc_fs dev_random diff --git a/src/build-data/os/freebsd.txt b/src/build-data/os/freebsd.txt index 4de44a318..2ff60844a 100644 --- a/src/build-data/os/freebsd.txt +++ b/src/build-data/os/freebsd.txt @@ -3,6 +3,7 @@ soname_suffix "so" <target_features> posix1 +posix_mlock clock_gettime dev_random arc4random diff --git a/src/build-data/os/hpux.txt b/src/build-data/os/hpux.txt index 112ad1ea3..f9a74f639 100644 --- a/src/build-data/os/hpux.txt +++ b/src/build-data/os/hpux.txt @@ -4,6 +4,7 @@ soname_suffix "so" <target_features> posix1 +posix_mlock clock_gettime dev_random diff --git a/src/build-data/os/hurd.txt b/src/build-data/os/hurd.txt index 29ca47490..6d12c9a48 100644 --- a/src/build-data/os/hurd.txt +++ b/src/build-data/os/hurd.txt @@ -3,6 +3,7 @@ soname_suffix "so" <target_features> posix1 +posix_mlock dev_random clock_gettime diff --git a/src/build-data/os/ios.txt b/src/build-data/os/ios.txt index a5ffab696..0e3eb7c4b 100644 --- a/src/build-data/os/ios.txt +++ b/src/build-data/os/ios.txt @@ -7,6 +7,7 @@ doc_dir doc <target_features> posix1 +posix_mlock arc4random sockets diff --git a/src/build-data/os/linux.txt b/src/build-data/os/linux.txt index 7029adbef..6f4f3d644 100644 --- a/src/build-data/os/linux.txt +++ b/src/build-data/os/linux.txt @@ -3,6 +3,7 @@ soname_suffix "so" <target_features> posix1 +posix_mlock dev_random proc_fs diff --git a/src/build-data/os/netbsd.txt b/src/build-data/os/netbsd.txt index 4de44a318..2ff60844a 100644 --- a/src/build-data/os/netbsd.txt +++ b/src/build-data/os/netbsd.txt @@ -3,6 +3,7 @@ soname_suffix "so" <target_features> posix1 +posix_mlock clock_gettime dev_random arc4random diff --git a/src/build-data/os/openbsd.txt b/src/build-data/os/openbsd.txt index 9c6c8b707..5ba148e66 100644 --- a/src/build-data/os/openbsd.txt +++ b/src/build-data/os/openbsd.txt @@ -5,6 +5,7 @@ soname_pattern_patch "lib{libname}.so.{abi_rev}.{version_minor}" <target_features> posix1 +posix_mlock clock_gettime dev_random arc4random diff --git a/src/build-data/os/qnx.txt b/src/build-data/os/qnx.txt index 70810d2d9..1cf671ce7 100644 --- a/src/build-data/os/qnx.txt +++ b/src/build-data/os/qnx.txt @@ -2,6 +2,7 @@ soname_suffix "so" <target_features> posix1 +posix_mlock clock_gettime dev_random diff --git a/src/build-data/os/solaris.txt b/src/build-data/os/solaris.txt index f2bfca616..c729f6aa1 100644 --- a/src/build-data/os/solaris.txt +++ b/src/build-data/os/solaris.txt @@ -3,6 +3,7 @@ soname_suffix "so" <target_features> posix1 +posix_mlock clock_gettime dev_random proc_fs diff --git a/src/lib/utils/os_utils.cpp b/src/lib/utils/os_utils.cpp index f2813b323..c7f04a855 100644 --- a/src/lib/utils/os_utils.cpp +++ b/src/lib/utils/os_utils.cpp @@ -325,11 +325,13 @@ void* OS::allocate_locked_pages(size_t length) ::madvise(ptr, length, MADV_DONTDUMP); #endif +#if defined(BOTAN_TARGET_OS_HAS_POSIX_MLOCK) if(::mlock(ptr, length) != 0) { ::munmap(ptr, length); return nullptr; // failed to lock } +#endif ::memset(ptr, 0, length); @@ -361,7 +363,11 @@ void OS::free_locked_pages(void* ptr, size_t length) #if defined(BOTAN_TARGET_OS_HAS_POSIX1) secure_scrub_memory(ptr, length); + +#if defined(BOTAN_TARGET_OS_HAS_POSIX_MLOCK) ::munlock(ptr, length); +#endif + ::munmap(ptr, length); #elif defined(BOTAN_TARGET_OS_HAS_VIRTUAL_LOCK) secure_scrub_memory(ptr, length); |