From e2bf6f4427da22eb05f0249a334c60542b93cbcc Mon Sep 17 00:00:00 2001 From: "wonguk.jeong" Date: Tue, 8 Jul 2014 13:37:15 -0400 Subject: [PATCH] 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 --- src/bin/e_fm.c | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index f02ff18c7..bebbf93ac 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -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; }