Fix dirfd crash issue in property service
In "init: harden property service" patch, dirfd() is invoked without checking whether opendir() return successfully. It may fail if load_persistent_properties() is invoked before userdata partition is mounted; then dirfd(NULL) will make init crash. This may happen if "is_charger" is true. Change-Id: I216fb743a3c9fa050f92fcb31b62e766346d84bb Signed-off-by: Yi-wei Zhao <gbjc64@motorola.com>
This commit is contained in:
parent
3e5e9e9ee2
commit
e41bc31555
|
@ -510,13 +510,14 @@ static void load_properties_from_file(const char *fn)
|
|||
static void load_persistent_properties()
|
||||
{
|
||||
DIR* dir = opendir(PERSISTENT_PROPERTY_DIR);
|
||||
int dir_fd = dirfd(dir);
|
||||
int dir_fd;
|
||||
struct dirent* entry;
|
||||
char value[PROP_VALUE_MAX];
|
||||
int fd, length;
|
||||
struct stat sb;
|
||||
|
||||
if (dir) {
|
||||
dir_fd = dirfd(dir);
|
||||
while ((entry = readdir(dir)) != NULL) {
|
||||
if (strncmp("persist.", entry->d_name, strlen("persist.")))
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue