X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Fgetenv.h;h=c504ecbdf0dfc3176a623f0fdfb839ea0a08f281;hb=c0c0989ab70574e09b2f7e8b48c2da6af664a849;hp=05864fb8eb39b5c79ef3cdae2e31118f9edf7165;hpb=730bf2af85afbd5557adac5e3283f3ad59e90194;p=lttng-ust.git diff --git a/liblttng-ust/getenv.h b/liblttng-ust/getenv.h index 05864fb8..c504ecbd 100644 --- a/liblttng-ust/getenv.h +++ b/liblttng-ust/getenv.h @@ -1,44 +1,23 @@ +/* + * 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 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) */ -#include -#include -#include -#include - -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 */