query_fileowner: remove trailing '/' from targets
Trailing '/' in paths causes lstat to dereference symlinks to directories which
causes it to break even though the symlink is a valid target. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> --- src/pacman/query.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pacman/query.c b/src/pacman/query.c index 84c9d3b..dca45e7 100644 --- a/src/pacman/query.c +++ b/src/pacman/query.c @@ -136,6 +136,12 @@ static int query_fileowner(alpm_list_t *targets) filename = strdup(t->data); + /* trailing '/' causes lstat to resolve directory symlinks */ + size_t len = strlen(filename) - 1; + while(len > 0 && filename[len] == '/'){ + filename[len] = ' '; + } + if(lstat(filename, &buf) == -1) { /* if it is not a path but a program name, then check in PATH */ if(strchr(filename, '/') == NULL) { -- 1.7.11.2 |
query_fileowner: remove trailing '/' from targets
Trailing '/' in paths causes lstat to dereference symlinks to directories which
causes it to break even though the symlink is a valid target. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> --- src/pacman/query.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pacman/query.c b/src/pacman/query.c index 176f91c..d145707 100644 --- a/src/pacman/query.c +++ b/src/pacman/query.c @@ -137,6 +137,12 @@ static int query_fileowner(alpm_list_t *targets) filename = strdup(t->data); + /* trailing '/' causes lstat to dereference directory symlinks */ + size_t len = strlen(filename) - 1; + while(len > 0 && filename[len] == '/'){ + filename[len--] = ' '; + } + if(lstat(filename, &buf) == -1) { /* if it is not a path but a program name, then check in PATH */ if(strchr(filename, '/') == NULL) { -- 1.7.11.3 |
| All times are GMT. The time now is 10:20 AM. |
VBulletin, Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.