/src/openssl/crypto/uid.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved. |
3 | | * |
4 | | * Licensed under the OpenSSL license (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(__OpenBSD__) || (defined(__FreeBSD__) && __FreeBSD__ > 2) || defined(__DragonFly__) |
14 | | |
15 | | # include OPENSSL_UNISTD |
16 | | |
17 | | int OPENSSL_issetugid(void) |
18 | | { |
19 | | return issetugid(); |
20 | | } |
21 | | |
22 | | #elif defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_UEFI) |
23 | | |
24 | | int OPENSSL_issetugid(void) |
25 | | { |
26 | | return 0; |
27 | | } |
28 | | |
29 | | #else |
30 | | |
31 | | # include OPENSSL_UNISTD |
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 | | # endif |
38 | | # endif |
39 | | |
40 | | int OPENSSL_issetugid(void) |
41 | 0 | { |
42 | 0 | # ifdef AT_SECURE |
43 | 0 | return getauxval(AT_SECURE) != 0; |
44 | | # else |
45 | | return getuid() != geteuid() || getgid() != getegid(); |
46 | | # endif |
47 | | } |
48 | | #endif |