diff --git a/adb/adb.cpp b/adb/adb.cpp index c78b96b6d..fdf720c5c 100644 --- a/adb/adb.cpp +++ b/adb/adb.cpp @@ -357,9 +357,9 @@ void handle_packet(apacket *p, atransport *t) case A_OPEN: /* OPEN(local-id, 0, "destination") */ if (t->online && p->msg.arg0 != 0 && p->msg.arg1 == 0) { - // TODO: Switch to string_view. - std::string address(p->payload.begin(), p->payload.end()); - asocket* s = create_local_service_socket(address.c_str(), t); + std::string_view address(p->payload.begin(), p->payload.size()); + + asocket* s = create_local_service_socket(address, t); if (s == nullptr) { send_close(0, p->msg.arg0, t); } else { diff --git a/adb/adb.h b/adb/adb.h index bd5d5504b..47ea0e841 100644 --- a/adb/adb.h +++ b/adb/adb.h @@ -139,7 +139,7 @@ atransport* find_emulator_transport_by_adb_port(int adb_port); atransport* find_emulator_transport_by_console_port(int console_port); #endif -int service_to_fd(const char* name, atransport* transport); +int service_to_fd(std::string_view name, atransport* transport); #if !ADB_HOST unique_fd daemon_service_to_fd(std::string_view name, atransport* transport); #endif diff --git a/adb/services.cpp b/adb/services.cpp index 4b033bd20..863665774 100644 --- a/adb/services.cpp +++ b/adb/services.cpp @@ -71,7 +71,7 @@ unique_fd create_service_thread(const char* service_name, std::functionid, name, fd); + LOG(VERBOSE) << "LS(" << s->id << "): bound to '" << name << "' via " << fd; #if !ADB_HOST - if ((!strncmp(name, "root:", 5) && getuid() != 0 && __android_log_is_debuggable()) || - (!strncmp(name, "unroot:", 7) && getuid() == 0) || - !strncmp(name, "usb:", 4) || - !strncmp(name, "tcpip:", 6)) { + if ((name.starts_with("root:") && getuid() != 0 && __android_log_is_debuggable()) || + (name.starts_with("unroot:") && getuid() == 0) || name.starts_with("usb:") || + name.starts_with("tcpip:")) { D("LS(%d): enabling exit_on_close", s->id); s->exit_on_close = 1; }