diff --git a/adb/socket_spec.cpp b/adb/socket_spec.cpp index d17036cec..b7b25fa88 100644 --- a/adb/socket_spec.cpp +++ b/adb/socket_spec.cpp @@ -103,12 +103,6 @@ bool parse_tcp_socket_spec(std::string_view spec, std::string* hostname, int* po if (!android::base::ParseNetAddress(addr, &hostname_value, &port_value, serial, error)) { return false; } - - if (port_value == -1) { - *error = "missing port in specification: "; - *error += spec; - return false; - } } if (hostname) { diff --git a/adb/socket_spec_test.cpp b/adb/socket_spec_test.cpp index e9d5270ca..e83c34c45 100644 --- a/adb/socket_spec_test.cpp +++ b/adb/socket_spec_test.cpp @@ -24,6 +24,13 @@ #include #include +TEST(socket_spec, parse_tcp_socket_spec_failure) { + std::string hostname, error, serial; + int port; + EXPECT_FALSE(parse_tcp_socket_spec("sneakernet:5037", &hostname, &port, &serial, &error)); + EXPECT_TRUE(error.find("sneakernet") != std::string::npos); +} + TEST(socket_spec, parse_tcp_socket_spec_just_port) { std::string hostname, error, serial; int port; @@ -134,6 +141,19 @@ TEST(socket_spec, socket_spec_listen_connect_tcp) { EXPECT_NE(client_fd.get(), -1); } +TEST(socket_spec, socket_spec_connect_failure) { + std::string error, serial; + int port; + unique_fd client_fd; + EXPECT_FALSE(socket_spec_connect(&client_fd, "tcp:", &port, &serial, &error)); + EXPECT_FALSE(socket_spec_connect(&client_fd, "acceptfd:", &port, &serial, &error)); + EXPECT_FALSE(socket_spec_connect(&client_fd, "vsock:", &port, &serial, &error)); + EXPECT_FALSE(socket_spec_connect(&client_fd, "vsock:x", &port, &serial, &error)); + EXPECT_FALSE(socket_spec_connect(&client_fd, "vsock:5", &port, &serial, &error)); + EXPECT_FALSE(socket_spec_connect(&client_fd, "vsock:5:x", &port, &serial, &error)); + EXPECT_FALSE(socket_spec_connect(&client_fd, "sneakernet:", &port, &serial, &error)); +} + TEST(socket_spec, socket_spec_listen_connect_localfilesystem) { std::string error, serial; int port; @@ -152,3 +172,16 @@ TEST(socket_spec, socket_spec_listen_connect_localfilesystem) { EXPECT_NE(client_fd.get(), -1); } } + +TEST(socket_spec, is_socket_spec) { + EXPECT_TRUE(is_socket_spec("tcp:blah")); + EXPECT_TRUE(is_socket_spec("acceptfd:blah")); + EXPECT_TRUE(is_socket_spec("local:blah")); + EXPECT_TRUE(is_socket_spec("localreserved:blah")); +} + +TEST(socket_spec, is_local_socket_spec) { + EXPECT_TRUE(is_local_socket_spec("local:blah")); + EXPECT_TRUE(is_local_socket_spec("tcp:localhost")); + EXPECT_FALSE(is_local_socket_spec("tcp:www.google.com")); +}