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

Commit 4c1f3eda authored by Tianjie Xu's avatar Tianjie Xu Committed by Gerrit Code Review
Browse files

Merge "Allow uncrypt to work without socket communication"

parents a5538b87 7ceff3e0
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -210,6 +210,11 @@ static const char* find_block_device(const char* path, bool* encryptable, bool*
}

static bool write_status_to_socket(int status, int socket) {
    // If socket equals -1, uncrypt is in debug mode without socket communication.
    // Skip writing and return success.
    if (socket == -1) {
        return true;
    }
    int status_out = htonl(status);
    return android::base::WriteFully(socket, &status_out, sizeof(int));
}
@@ -566,7 +571,7 @@ static void usage(const char* exename) {
}

int main(int argc, char** argv) {
    enum { UNCRYPT, SETUP_BCB, CLEAR_BCB } action;
    enum { UNCRYPT, SETUP_BCB, CLEAR_BCB, UNCRYPT_DEBUG } action;
    const char* input_path = nullptr;
    const char* map_file = CACHE_BLOCK_MAP.c_str();

@@ -579,7 +584,7 @@ int main(int argc, char** argv) {
    } else if (argc == 3) {
        input_path = argv[1];
        map_file = argv[2];
        action = UNCRYPT;
        action = UNCRYPT_DEBUG;
    } else {
        usage(argv[0]);
        return 2;
@@ -593,6 +598,17 @@ int main(int argc, char** argv) {
        return 1;
    }

    if (action == UNCRYPT_DEBUG) {
        LOG(INFO) << "uncrypt called in debug mode, skip socket communication\n";
        bool success = uncrypt_wrapper(input_path, map_file, -1);
        if (success) {
            LOG(INFO) << "uncrypt succeeded\n";
        } else{
            LOG(INFO) << "uncrypt failed\n";
        }
        return success ? 0 : 1;
    }

    // c3. The socket is created by init when starting the service. uncrypt
    // will use the socket to communicate with its caller.
    android::base::unique_fd service_socket(android_get_control_socket(UNCRYPT_SOCKET.c_str()));