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 Cedric BAIL
parent eb0d0487cf
commit bc0fcae681
1 changed files with 7 additions and 3 deletions

View File

@ -527,10 +527,11 @@ _e_fm2_icon_path(const E_Fm2_Icon *ic, char *buf, int buflen)
{
int r;
if (ic->info.link)
r = snprintf(buf, buflen, "%s", ic->info.link);
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;
}
@ -5790,7 +5791,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, buf);
e_fm2_path_set(ic->sd->obj,
ic->info.real_link ? "/" : ic->sd->dev,
buf);
return 1;
}