aboutsummaryrefslogtreecommitdiff
path: root/miscutils
diff options
context:
space:
mode:
authorMarkus Gothe <nietzsche@lysator.liu.se>2017-10-21 21:34:22 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-10-22 10:43:43 +0200
commit045327a418d1cf0a99405ca0b70ed61b5c1a1869 (patch)
tree2eeb112edb4744608e17d6c7b973c64b183abe18 /miscutils
parent14c85eb7db918daa1914a0e60081b1d3ca12ae04 (diff)
downloadbusybox-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.c9
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
28static const char scsi_dir[] ALIGN1 = "/sys/bus/scsi/devices";
29
28static char *get_line(const char *filename, char *buf, unsigned *bufsize_p) 30static 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)