aboutsummaryrefslogtreecommitdiff
path: root/libbb/find_root_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/find_root_device.c')
-rw-r--r--libbb/find_root_device.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/libbb/find_root_device.c b/libbb/find_root_device.c
index b12d392a2..654f17145 100644
--- a/libbb/find_root_device.c
+++ b/libbb/find_root_device.c
@@ -48,11 +48,14 @@ extern char *find_real_root_device_name(const char* name)
bb_perror_msg("could not open '/dev'");
else {
while((entry = readdir(dir)) != NULL) {
-
- fileName = concat_subpath_file("/dev", entry->d_name);
- if(fileName == NULL)
+ const char *name = entry->d_name;
+ /* Must skip ".." since that is "/", and so we
+ * would get a false positive on ".." */
+ if (name[0] == '.' && name[1] == '.' && !name[2])
continue;
+ fileName = concat_path_file("/dev", name);
+
/* Some char devices have the same dev_t as block
* devices, so make sure this is a block device */
if (stat(fileName, &statBuf) == 0 &&
@@ -66,7 +69,7 @@ extern char *find_real_root_device_name(const char* name)
}
}
if(fileName==NULL)
- fileName=bb_xstrdup("/dev/root");
+ fileName = bb_xstrdup("/dev/root");
return fileName;
}