diff --git a/src/lib/ecore_file/ecore_file_path.c b/src/lib/ecore_file/ecore_file_path.c index 0c4e466ce5..513f3b9a8a 100644 --- a/src/lib/ecore_file/ecore_file_path.c +++ b/src/lib/ecore_file/ecore_file_path.c @@ -95,7 +95,10 @@ ecore_file_app_installed(const char *exe) char buf[PATH_MAX]; if (!exe) return EINA_FALSE; - if (ecore_file_can_exec(exe)) return EINA_TRUE; + if (((!strncmp(exe, "/", 1)) || + (!strncmp(exe, "./", 2)) || + (!strncmp(exe, "../", 3))) && + ecore_file_can_exec(exe)) return EINA_TRUE; EINA_LIST_FOREACH(__ecore_file_path_bin, l, dir) { diff --git a/src/lib/eina/eina_vpath.c b/src/lib/eina/eina_vpath.c index ac2d6ca9e2..871612c64e 100644 --- a/src/lib/eina/eina_vpath.c +++ b/src/lib/eina/eina_vpath.c @@ -50,12 +50,10 @@ static char * _fallback_runtime_dir(const char *home) { char buf[PATH_MAX]; -#if defined(HAVE_GETUID) - uid_t uid = getuid(); -#endif struct stat st; - #if defined(HAVE_GETUID) && defined(HAVE_GETEUID) + uid_t uid = getuid(); + if (setuid(geteuid()) != 0) { fprintf(stderr,