diff options
author | Markus Gothe <nietzsche@lysator.liu.se> | 2017-10-21 21:34:22 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-10-22 10:43:43 +0200 |
commit | 045327a418d1cf0a99405ca0b70ed61b5c1a1869 (patch) | |
tree | 2eeb112edb4744608e17d6c7b973c64b183abe18 /miscutils | |
parent | 14c85eb7db918daa1914a0e60081b1d3ca12ae04 (diff) | |
download | busybox-w32-045327a418d1cf0a99405ca0b70ed61b5c1a1869.tar.gz busybox-w32-045327a418d1cf0a99405ca0b70ed61b5c1a1869.tar.bz2 busybox-w32-045327a418d1cf0a99405ca0b70ed61b5c1a1869.zip |
lsscsi: fix xchdir("..") from symlink in /sys/bus/scsi/devices
Signed-off-by: Markus Gothe <nietzsche@lysator.liu.se>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/lsscsi.c | 9 |
1 files changed, 7 insertions, 2 deletions
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 @@ | |||
25 | 25 | ||
26 | #include "libbb.h" | 26 | #include "libbb.h" |
27 | 27 | ||
28 | static const char scsi_dir[] ALIGN1 = "/sys/bus/scsi/devices"; | ||
29 | |||
28 | static char *get_line(const char *filename, char *buf, unsigned *bufsize_p) | 30 | static char *get_line(const char *filename, char *buf, unsigned *bufsize_p) |
29 | { | 31 | { |
30 | unsigned bufsize = *bufsize_p; | 32 | unsigned bufsize = *bufsize_p; |
@@ -53,7 +55,7 @@ int lsscsi_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) | |||
53 | struct dirent *de; | 55 | struct dirent *de; |
54 | DIR *dir; | 56 | DIR *dir; |
55 | 57 | ||
56 | xchdir("/sys/bus/scsi/devices"); | 58 | xchdir(scsi_dir); |
57 | 59 | ||
58 | dir = xopendir("."); | 60 | dir = xopendir("."); |
59 | while ((de = readdir(dir)) != NULL) { | 61 | while ((de = readdir(dir)) != NULL) { |
@@ -112,7 +114,10 @@ int lsscsi_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) | |||
112 | ); | 114 | ); |
113 | /* TODO: also output device column, e.g. "/dev/sdX" */ | 115 | /* TODO: also output device column, e.g. "/dev/sdX" */ |
114 | 116 | ||
115 | xchdir(".."); | 117 | /* chdir("..") may not work as expected, |
118 | * since we might have followed a symlink. | ||
119 | */ | ||
120 | xchdir(scsi_dir); | ||
116 | } | 121 | } |
117 | 122 | ||
118 | if (ENABLE_FEATURE_CLEAN_UP) | 123 | if (ENABLE_FEATURE_CLEAN_UP) |