From 24833430bc2dbea733c3b0b9ea6c6b976f95474a Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Tue, 10 Jun 2003 17:22:49 +0000 Subject: Vodz, last_patch_88 --- libbb/find_root_device.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'libbb/find_root_device.c') 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; } -- cgit v1.2.3