diff options
Diffstat (limited to 'libbb/find_root_device.c')
-rw-r--r-- | libbb/find_root_device.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libbb/find_root_device.c b/libbb/find_root_device.c index b12d392..654f171 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; } |