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

Commit 3c2086da authored by Andres Morales's avatar Andres Morales
Browse files

[gatekeeperd] clear state and mark on cold boot

required to initialize state by certain HAL impls

Bug: 22011857
Change-Id: Ibb01a799da983e1a930aae946c331b23f571861d
parent b2856ddb
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -58,6 +58,13 @@ public:
            if (ret < 0)
                LOG_ALWAYS_FATAL_IF(ret < 0, "Unable to open GateKeeper HAL");
        }

        if (mark_cold_boot()) {
            ALOGI("cold boot: clearing state");
            if (device != NULL && device->delete_all_users != NULL) {
                device->delete_all_users(device);
            }
        }
    }

    virtual ~GateKeeperProxy() {
@@ -76,6 +83,20 @@ public:
        close(fd);
    }

    bool mark_cold_boot() {
        const char *filename = ".coldboot";
        if (access(filename, F_OK) == -1) {
            int fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR);
            if (fd < 0) {
                ALOGE("could not open file: %s : %s", filename, strerror(errno));
                return false;
            }
            close(fd);
            return true;
        }
        return false;
    }

    void maybe_store_sid(uint32_t uid, uint64_t sid) {
        char filename[21];
        sprintf(filename, "%u", uid);
@@ -249,6 +270,10 @@ public:
            return;
        }
        clear_sid(uid);

        if (device != NULL && device->delete_user != NULL) {
            device->delete_user(device, uid);
        }
    }

    virtual status_t dump(int fd, const Vector<String16> &) {