X-Git-Url: http://git.liburcu.org/?p=lttng-ust.git;a=blobdiff_plain;f=liblttng-ust%2Fgetenv.h;h=14d70506a388f9acff1ae600245d4d7f451fee13;hp=05864fb8eb39b5c79ef3cdae2e31118f9edf7165;hb=6f626d284c2bb02ae8980da6e8053e191d604286;hpb=1f6f42e63ae50237f22963733d71a208f9e36599 diff --git a/liblttng-ust/getenv.h b/liblttng-ust/getenv.h index 05864fb8..14d70506 100644 --- a/liblttng-ust/getenv.h +++ b/liblttng-ust/getenv.h @@ -19,26 +19,17 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include -#include -#include -#include +/* + * Always add the lttng-ust environment variables to lttng_getenv() + * infrastructure rather than using getenv() directly from lttng-ust. + * This ensures that we don't trigger races between getenv() invoked by + * lttng-ust listener threads invoked concurrently with setenv() called + * by an otherwise single-threaded application thread. (the application + * is not aware that it runs with lttng-ust) + */ -static inline -int lttng_is_setuid_setgid(void) -{ - return geteuid() != getuid() || getegid() != getgid(); -} +char *lttng_getenv(const char *name); -static inline -char *lttng_secure_getenv(const char *name) -{ - if (lttng_is_setuid_setgid()) { - ERR("Getting environment variable '%s' from setuid/setgid binary refused for security reasons.", - name); - return NULL; - } - return getenv(name); -} +void lttng_ust_getenv_init(void); #endif /* _COMPAT_GETENV_H */