Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e41bc315 authored by Yi-wei Zhao's avatar Yi-wei Zhao
Browse files

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: default avatarYi-wei Zhao <gbjc64@motorola.com>
parent 3e5e9e9e
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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;