/src/openssl/crypto/uid.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright 2001-2021 The OpenSSL Project Authors. All Rights Reserved. |
3 | | * |
4 | | * Licensed under the Apache License 2.0 (the "License"). You may not use |
5 | | * this file except in compliance with the License. You can obtain a copy |
6 | | * in the file LICENSE in the source distribution or at |
7 | | * https://www.openssl.org/source/license.html |
8 | | */ |
9 | | |
10 | | #include <openssl/crypto.h> |
11 | | #include <openssl/opensslconf.h> |
12 | | |
13 | | #if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_UEFI) |
14 | | |
15 | | int OPENSSL_issetugid(void) |
16 | | { |
17 | | return 0; |
18 | | } |
19 | | |
20 | | #elif defined(__OpenBSD__) || (defined(__FreeBSD__) && __FreeBSD__ > 2) || defined(__DragonFly__) || (defined(__GLIBC__) && defined(__FreeBSD_kernel__)) |
21 | | |
22 | | # include <unistd.h> |
23 | | |
24 | | int OPENSSL_issetugid(void) |
25 | | { |
26 | | return issetugid(); |
27 | | } |
28 | | |
29 | | #else |
30 | | |
31 | | # include <unistd.h> |
32 | | # include <sys/types.h> |
33 | | |
34 | | # if defined(__GLIBC__) && defined(__GLIBC_PREREQ) |
35 | | # if __GLIBC_PREREQ(2, 16) |
36 | | # include <sys/auxv.h> |
37 | | # define OSSL_IMPLEMENT_GETAUXVAL |
38 | | # endif |
39 | | # elif defined(__ANDROID_API__) |
40 | | /* see https://developer.android.google.cn/ndk/guides/cpu-features */ |
41 | | # if __ANDROID_API__ >= 18 |
42 | | # include <sys/auxv.h> |
43 | | # define OSSL_IMPLEMENT_GETAUXVAL |
44 | | # endif |
45 | | # endif |
46 | | |
47 | | int OPENSSL_issetugid(void) |
48 | 0 | { |
49 | 0 | # ifdef OSSL_IMPLEMENT_GETAUXVAL |
50 | 0 | return getauxval(AT_SECURE) != 0; |
51 | | # else |
52 | | return getuid() != geteuid() || getgid() != getegid(); |
53 | | # endif |
54 | 0 | } |
55 | | #endif |