From: Markus Gothe Date: Sat, 21 Oct 2017 19:34:22 +0000 (+0200) Subject: lsscsi: fix xchdir("..") from symlink in /sys/bus/scsi/devices X-Git-Tag: 1_28_0~35 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=045327a418d1cf0a99405ca0b70ed61b5c1a1869;p=oweals%2Fbusybox.git lsscsi: fix xchdir("..") from symlink in /sys/bus/scsi/devices Signed-off-by: Markus Gothe Signed-off-by: Denys Vlasenko --- diff --git a/miscutils/lsscsi.c b/miscutils/lsscsi.c index d7cd51056..0aaa01ded 100644 --- a/miscutils/lsscsi.c +++ b/miscutils/lsscsi.c @@ -25,6 +25,8 @@ #include "libbb.h" +static const char scsi_dir[] ALIGN1 = "/sys/bus/scsi/devices"; + static char *get_line(const char *filename, char *buf, unsigned *bufsize_p) { unsigned bufsize = *bufsize_p; @@ -53,7 +55,7 @@ int lsscsi_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) struct dirent *de; DIR *dir; - xchdir("/sys/bus/scsi/devices"); + xchdir(scsi_dir); dir = xopendir("."); while ((de = readdir(dir)) != NULL) { @@ -112,7 +114,10 @@ int lsscsi_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) ); /* TODO: also output device column, e.g. "/dev/sdX" */ - xchdir(".."); + /* chdir("..") may not work as expected, + * since we might have followed a symlink. + */ + xchdir(scsi_dir); } if (ENABLE_FEATURE_CLEAN_UP)