← Commit list

045327a41

Markus Gothe
Markus Gothe
2017-10-22
SUCCESS Duration: 143s

Subject

lsscsi: fix xchdir("..") from symlink in /sys/bus/scsi/devices

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

miscutils/lsscsi.c+7 -2
@@ -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)