We add new define - e_secure_getenv.
If the system supports the secure_getenv() function, e_secure_getenv will use the
secure_getenv() function.
If not, check whether the system supports __secure_getenv. If yes, e_secure_getenv
use the __secure_getenv() function.
Otherwise, fall back to using the getenv function.
Change-Id: If0588224a38395a8dd1a482904573ddcde3278d1
AC_SUBST([fnmatch_libs])
+##### check secure_getenv function #####
+AC_CHECK_FUNCS(secure_getenv, sg_res=yes, sg_res=no)
+if test "x$sg_res" = "xno"; then
+ AC_CHECK_FUNCS(__secure_getenv, _sg_res=yes, _sg_res=no)
+ if test "x$_sg_res" = "xno"; then
+ echo "C library does not support secure_getenv, use getenv instead"
+ else
+ AC_DEFINE(HAVE___SECURE_GETENV, 1, [Have __secure_getenv])
+ fi
+else
+ AC_DEFINE(HAVE_SECURE_GETENV, 1, [Have secure_getenv])
+fi
+
dnl AC_E_CHECK_PKG(VALGRIND, [valgrind >= 2.4.0], [], [:])
AC_SUBST([VALGRIND_CFLAGS])
AC_SUBST([VALGRIND_LIBS])
/* TIZEN_ONLY: We don't save e.cfg file.
* Sometimes e.cfg file was broken after writing.
*/
- if (getenv("E_CONF_RO")) e_config_save_block_set(1);
+ if (e_secure_getenv("E_CONF_RO")) e_config_save_block_set(1);
/* if environment var set - use this profile name */
char *s = e_util_env_get("E_CONF_PROFILE");
#undef D
e_config_profile_set("default");
if (!reload) e_config_profile_del(e_config_profile_get());
- if (getenv("E_CONF_RO")) e_config_save_block_set(1);
+ if (e_secure_getenv("E_CONF_RO")) e_config_save_block_set(1);
e_error_message_show(_("Could not load e.cfg"));
return;
}
E_API void *
e_config_domain_load(const char *domain, E_Config_DD *edd)
{
- if (getenv("E_CONF_RO"))
+ if (e_secure_getenv("E_CONF_RO"))
{
return e_config_domain_system_load(domain, edd);
}
if ((!strcmp(argv[i], "-profile")) && (i < (argc - 1)))
{
i++;
- if (!getenv("E_CONF_PROFILE"))
+ if (!e_secure_getenv("E_CONF_PROFILE"))
e_util_env_set("E_CONF_PROFILE", argv[i]);
}
else if ((!strcmp(argv[i], "-version")) ||
static int
_e_main_dirs_init(void)
{
- if(getenv("E_CONF_RO"))
+ if(e_secure_getenv("E_CONF_RO"))
{
return 1;
}
eina_log_domain_level_set("e", 3);
#ifdef HAVE_DLOG
- if (getenv("E_LOG_DLOG_ENABLE"))
+ if (e_secure_getenv("E_LOG_DLOG_ENABLE"))
e_log_dlog_enable(EINA_TRUE);
#endif
- s = getenv("E_LOG_FILE_PATH");
+ s = e_secure_getenv("E_LOG_FILE_PATH");
if (s)
{
#ifdef HAVE_DLOG
if (!comp_wl->seat.name)
comp_wl->seat.name = "default";
- dont_set_e_input_keymap = getenv("NO_E_INPUT_KEYMAP_CACHE") ? EINA_TRUE : EINA_FALSE;
- dont_use_xkb_cache = getenv("NO_KEYMAP_CACHE") ? EINA_TRUE : EINA_FALSE;
+ dont_set_e_input_keymap = e_secure_getenv("NO_E_INPUT_KEYMAP_CACHE") ? EINA_TRUE : EINA_FALSE;
+ dont_use_xkb_cache = e_secure_getenv("NO_KEYMAP_CACHE") ? EINA_TRUE : EINA_FALSE;
g_mutex_init(&comp_wl->kbd.resource_mutex);
g_mutex_init(&comp_wl->kbd.repeat_delay_mutex);
struct xkb_keymap *map = NULL;
/* keymap */
- dont_set_e_input_keymap = getenv("NO_E_INPUT_KEYMAP_CACHE") ? EINA_TRUE : EINA_FALSE;
- dont_use_xkb_cache = getenv("NO_KEYMAP_CACHE") ? EINA_TRUE : EINA_FALSE;
+ dont_set_e_input_keymap = e_secure_getenv("NO_E_INPUT_KEYMAP_CACHE") ? EINA_TRUE : EINA_FALSE;
+ dont_use_xkb_cache = e_secure_getenv("NO_KEYMAP_CACHE") ? EINA_TRUE : EINA_FALSE;
if (e_config->xkb.use_cache && !dont_use_xkb_cache)
{
#ifdef HAVE_UNSETENV
unsetenv(var);
#else
- if (getenv(var)) putenv(var);
+ if (e_secure_getenv(var)) putenv(var);
#endif
}
}
{
if (!name) return NULL;
- char *val = getenv(name);
+ char *val = e_secure_getenv(name);
if (!val) return NULL;
/* Using strdup for sanitizing
# define OBJECT_CHECK
# define OBJECT_HASH_CHECK
+#if defined(HAVE_SECURE_GETENV)
+# define e_secure_getenv secure_getenv
+#elif defined(HAVE___SECURE_GETENV)
+# define e_secure_getenv __secure_getenv
+#else
+# define e_secure_getenv getenv
+#endif
+
# define E_LAYER_COUNT 31
//#define SMARTERR(args...) abort()