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; int r;
if (ic->info.link) if (ic->info.real_link)
r = snprintf(buf, buflen, "%s", ic->info.link); r = snprintf(buf, buflen, "%s", ic->info.real_link);
else else
r = snprintf(buf, buflen, "%s/%s", ic->sd->path, ic->info.file); r = snprintf(buf, buflen, "%s/%s", ic->sd->path, ic->info.file);
return r < buflen; 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))) if (!_e_fm2_icon_path(ic, buf, sizeof(buf)))
return -1; 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; return 1;
} }