05864fb8eb39b5c79ef3cdae2e31118f9edf7165
[lttng-ust.git] / liblttng-ust / getenv.h
1 #ifndef _COMPAT_GETENV_H
2 #define _COMPAT_GETENV_H
3
4 /*
5 * Copyright (C) 2015 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; only
10 * version 2.1 of the License.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22 #include <stdlib.h>
23 #include <unistd.h>
24 #include <sys/types.h>
25 #include <usterr-signal-safe.h>
26
27 static inline
28 int lttng_is_setuid_setgid(void)
29 {
30 return geteuid() != getuid() || getegid() != getgid();
31 }
32
33 static inline
34 char *lttng_secure_getenv(const char *name)
35 {
36 if (lttng_is_setuid_setgid()) {
37 ERR("Getting environment variable '%s' from setuid/setgid binary refused for security reasons.",
38 name);
39 return NULL;
40 }
41 return getenv(name);
42 }
43
44 #endif /* _COMPAT_GETENV_H */
This page took 0.035472 seconds and 3 git commands to generate.