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

Commit b78000ae authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "adbd_auth: don't abort on unexpected response." into rvc-dev

parents f4facf26 9653c9cf
Loading
Loading
Loading
Loading
+11 −5
Original line number Original line Diff line number Diff line
@@ -206,12 +206,18 @@ public:
    void AllowUsbDevice(std::string_view buf) EXCLUDES(mutex_) {
    void AllowUsbDevice(std::string_view buf) EXCLUDES(mutex_) {
        std::lock_guard<std::mutex> lock(mutex_);
        std::lock_guard<std::mutex> lock(mutex_);
        CHECK(buf.empty());
        CHECK(buf.empty());
        CHECK(dispatched_prompt_.has_value());

        if (dispatched_prompt_.has_value()) {
            // It's possible for the framework to send us a response without our having sent a
            // request to it: e.g. if adbd restarts while we have a pending request.
            auto& [id, key, arg] = *dispatched_prompt_;
            auto& [id, key, arg] = *dispatched_prompt_;
            keys_.emplace(id, std::move(key));
            keys_.emplace(id, std::move(key));


            callbacks_.key_authorized(arg, id);
            callbacks_.key_authorized(arg, id);
            dispatched_prompt_ = std::nullopt;
            dispatched_prompt_ = std::nullopt;
        } else {
            LOG(WARNING) << "adbd_auth: received authorization for unknown prompt, ignoring";
        }


        // We need to dispatch pending prompts here upon success as well,
        // We need to dispatch pending prompts here upon success as well,
        // since we might have multiple queued prompts.
        // since we might have multiple queued prompts.