X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=liblttng-ust%2Fgetenv.h;h=a5dffb24dc324fe5b08d7ce97d46a92f980abd84;hb=0c2f844420608b1865b77cff1e84ce01bb9e3937;hp=05864fb8eb39b5c79ef3cdae2e31118f9edf7165;hpb=730bf2af85afbd5557adac5e3283f3ad59e90194;p=lttng-ust.git diff --git a/liblttng-ust/getenv.h b/liblttng-ust/getenv.h index 05864fb8..a5dffb24 100644 --- a/liblttng-ust/getenv.h +++ b/liblttng-ust/getenv.h @@ -1,44 +1,25 @@ +/* + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (C) 2015 Mathieu Desnoyers + */ + #ifndef _COMPAT_GETENV_H #define _COMPAT_GETENV_H /* - * Copyright (C) 2015 - Mathieu Desnoyers - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; only - * version 2.1 of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Always add the lttng-ust environment variables using the lttng_ust_getenv() + * infrastructure rather than using getenv() directly. 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) */ -#include -#include -#include -#include - -static inline -int lttng_is_setuid_setgid(void) -{ - return geteuid() != getuid() || getegid() != getgid(); -} +__attribute__((visibility("hidden"))) +char *lttng_ust_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); -} +__attribute__((visibility("hidden"))) +void lttng_ust_getenv_init(void); #endif /* _COMPAT_GETENV_H */