e_fm: fix symlink access bug

Summary:
There was no checking about absolute path of symbolic link
In case of symbolic link, use real link (absolute path) and set sd->dev as "/"

Fixes T1365

Reviewers: raster, zmike

CC: seoz, cedric

Maniphest Tasks: T1365

Differential Revision: https://phab.enlightenment.org/D1147
This commit is contained in:
wonguk.jeong 2014-07-08 13:37:15 -04:00 committed by Mike Blumenkrantz
parent 1a11067c32
commit e2bf6f4427
1 changed files with 6 additions and 23 deletions

View File

@ -535,28 +535,11 @@ _e_fm2_icon_path(const E_Fm2_Icon *ic, char *buf, int buflen)
{
int r;
if (ic->info.link)
{
if (ic->info.link[0] == '/')
r = snprintf(buf, buflen, "%s", ic->info.link);
else
{
char *tmp;
r = snprintf(buf, buflen, "%s/%s", ic->sd->path, ic->info.file);
if (!ic->sd->dev)
{
tmp = ecore_file_realpath(buf);
if (tmp)
{
r = snprintf(buf, buflen, "%s", tmp);
free(tmp);
}
}
}
}
if (ic->info.real_link)
r = snprintf(buf, buflen, "%s", ic->info.real_link);
else
r = snprintf(buf, buflen, "%s/%s", ic->sd->path, ic->info.file);
return r < buflen;
}
@ -5779,10 +5762,10 @@ _e_fm2_inplace_open(const E_Fm2_Icon *ic)
if (!_e_fm2_icon_path(ic, buf, sizeof(buf)))
return -1;
e_fm2_path_set(ic->sd->obj,
// ic->info.link ? "/" : ic->sd->dev,
ic->sd->dev,
e_fm2_path_set(ic->sd->obj,
ic->info.real_link ? "/" : ic->sd->dev,
buf);
return 1;
}