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

Commit a6bb369c authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes I8d0c60e5,Ib8ad0ad6

* changes:
  adb: boolify check_header and check_data.
  adb: redirect stdout/stderr before initializing usb.
parents 23062721 36dadca9
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -125,6 +125,11 @@ int adb_server_main(int is_daemon, const std::string& socket_spec, int ack_reply
    });
    });
#endif
#endif


    if (is_daemon) {
        close_stdin();
        setup_daemon_logging();
    }

    android::base::at_quick_exit(adb_server_cleanup);
    android::base::at_quick_exit(adb_server_cleanup);


    init_transport_registration();
    init_transport_registration();
@@ -148,11 +153,6 @@ int adb_server_main(int is_daemon, const std::string& socket_spec, int ack_reply
        std::this_thread::sleep_for(100ms);
        std::this_thread::sleep_for(100ms);
    }
    }


    if (is_daemon) {
        close_stdin();
        setup_daemon_logging();
    }

    adb_auth_init();
    adb_auth_init();


    if (is_daemon) {
    if (is_daemon) {
+6 −9
Original line number Original line Diff line number Diff line
@@ -1050,27 +1050,24 @@ void unregister_usb_transport(usb_handle* usb) {
        [usb](atransport* t) { return t->usb == usb && t->GetConnectionState() == kCsNoPerm; });
        [usb](atransport* t) { return t->usb == usb && t->GetConnectionState() == kCsNoPerm; });
}
}


int check_header(apacket* p, atransport* t) {
bool check_header(apacket* p, atransport* t) {
    if (p->msg.magic != (p->msg.command ^ 0xffffffff)) {
    if (p->msg.magic != (p->msg.command ^ 0xffffffff)) {
        VLOG(RWX) << "check_header(): invalid magic command = " << std::hex << p->msg.command
        VLOG(RWX) << "check_header(): invalid magic command = " << std::hex << p->msg.command
                  << ", magic = " << p->msg.magic;
                  << ", magic = " << p->msg.magic;
        return -1;
        return false;
    }
    }


    if (p->msg.data_length > t->get_max_payload()) {
    if (p->msg.data_length > t->get_max_payload()) {
        VLOG(RWX) << "check_header(): " << p->msg.data_length
        VLOG(RWX) << "check_header(): " << p->msg.data_length
                  << " atransport::max_payload = " << t->get_max_payload();
                  << " atransport::max_payload = " << t->get_max_payload();
        return -1;
        return false;
    }
    }


    return 0;
    return true;
}
}


int check_data(apacket* p) {
bool check_data(apacket* p) {
    if (calculate_apacket_checksum(p) != p->msg.data_check) {
    return calculate_apacket_checksum(p) == p->msg.data_check;
        return -1;
    }
    return 0;
}
}


#if ADB_HOST
#if ADB_HOST
+2 −2
Original line number Original line Diff line number Diff line
@@ -221,8 +221,8 @@ int register_socket_transport(int s, const char* serial, int port, int local);
// This should only be used for transports with connection_state == kCsNoPerm.
// This should only be used for transports with connection_state == kCsNoPerm.
void unregister_usb_transport(usb_handle* usb);
void unregister_usb_transport(usb_handle* usb);


int check_header(apacket* p, atransport* t);
bool check_header(apacket* p, atransport* t);
int check_data(apacket* p);
bool check_data(apacket* p);


void close_usb_devices();
void close_usb_devices();
void close_usb_devices(std::function<bool(const atransport*)> predicate);
void close_usb_devices(std::function<bool(const atransport*)> predicate);
+4 −4
Original line number Original line Diff line number Diff line
@@ -67,7 +67,7 @@ static int remote_read(apacket *p, atransport *t)
        return -1;
        return -1;
    }
    }


    if(check_header(p, t)) {
    if (!check_header(p, t)) {
        D("bad header: terminated (data)");
        D("bad header: terminated (data)");
        return -1;
        return -1;
    }
    }
@@ -77,7 +77,7 @@ static int remote_read(apacket *p, atransport *t)
        return -1;
        return -1;
    }
    }


    if(check_data(p)) {
    if (!check_data(p)) {
        D("bad data: terminated (data)");
        D("bad data: terminated (data)");
        return -1;
        return -1;
    }
    }
+5 −5
Original line number Original line Diff line number Diff line
@@ -72,7 +72,7 @@ static int remote_read(apacket* p, atransport* t) {
        D("remote usb: read terminated (message)");
        D("remote usb: read terminated (message)");
        return -1;
        return -1;
    }
    }
    if (static_cast<size_t>(n) != sizeof(p->msg) || check_header(p, t)) {
    if (static_cast<size_t>(n) != sizeof(p->msg) || !check_header(p, t)) {
        D("remote usb: check_header failed, skip it");
        D("remote usb: check_header failed, skip it");
        goto err_msg;
        goto err_msg;
    }
    }
@@ -95,7 +95,7 @@ static int remote_read(apacket* p, atransport* t) {
            goto err_msg;
            goto err_msg;
        }
        }
    }
    }
    if (check_data(p)) {
    if (!check_data(p)) {
        D("remote usb: check_data failed, skip it");
        D("remote usb: check_data failed, skip it");
        goto err_msg;
        goto err_msg;
    }
    }
@@ -124,7 +124,7 @@ static int remote_read(apacket *p, atransport *t)
        return -1;
        return -1;
    }
    }


    if(check_header(p, t)) {
    if (!check_header(p, t)) {
        D("remote usb: check_header failed");
        D("remote usb: check_header failed");
        return -1;
        return -1;
    }
    }
@@ -136,7 +136,7 @@ static int remote_read(apacket *p, atransport *t)
        }
        }
    }
    }


    if(check_data(p)) {
    if (!check_data(p)) {
        D("remote usb: check_data failed");
        D("remote usb: check_data failed");
        return -1;
        return -1;
    }
    }