diff options
author | Karel Zak | 2009-10-07 01:34:36 +0200 |
---|---|---|
committer | Karel Zak | 2009-10-07 01:34:36 +0200 |
commit | d1dca71078a9ed8eef35ba2b790d1e7db9421f66 (patch) | |
tree | 9c0c87896156c66e8ca27bf863bd00c0f1c31e40 /misc-utils/namei.c | |
parent | wipefs: fix coding style (diff) | |
download | kernel-qcow2-util-linux-d1dca71078a9ed8eef35ba2b790d1e7db9421f66.tar.gz kernel-qcow2-util-linux-d1dca71078a9ed8eef35ba2b790d1e7db9421f66.tar.xz kernel-qcow2-util-linux-d1dca71078a9ed8eef35ba2b790d1e7db9421f66.zip |
namei: fix alone symlink evaluation
$ mkdir aaa
$ ln -s aaa mylink
old version:
$ namei mylink
namei: could not stat 'mylink/aaa': No such file or directory
new version:
$ namei mylink
f: mylink
l mylink -> aaa
d aaa
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'misc-utils/namei.c')
-rw-r--r-- | misc-utils/namei.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/misc-utils/namei.c b/misc-utils/namei.c index b8930cdf0..ebd82fdb8 100644 --- a/misc-utils/namei.c +++ b/misc-utils/namei.c @@ -190,14 +190,15 @@ readlink_to_namei(struct namei *nm, const char *path) if (*sym != '/') { char *p = strrchr(path, '/'); - nm->relstart = p ? p - path : strlen(path); - sz += nm->relstart + 1; + nm->relstart = p ? p - path : 0; + if (nm->relstart) + sz += nm->relstart + 1; } nm->abslink = malloc(sz + 1); if (!nm->abslink) err(EXIT_FAILURE, _("out of memory?")); - if (*sym != '/') { + if (*sym != '/' && nm->relstart) { /* create the absolute path from the relative symlink */ memcpy(nm->abslink, path, nm->relstart); *(nm->abslink + nm->relstart) = '/'; |