diff --git a/adb_test.go b/adb_test.go index 95f63f2..b94b6ce 100644 --- a/adb_test.go +++ b/adb_test.go @@ -59,9 +59,14 @@ func TestNormalizeAddr(t *testing.T) { }{ {in: "192.168.1.5", want: "192.168.1.5:5555"}, {in: "192.168.1.5:5556", want: "192.168.1.5:5556"}, + {in: "2001:db8::1", want: "[2001:db8::1]:5555"}, + {in: "[2001:db8::1]:5556", want: "[2001:db8::1]:5556"}, {in: "mydevice.local", want: "mydevice.local:5555"}, {in: "phone:5555", want: "phone:5555"}, {in: "", wantErr: true}, + {in: "phone:", wantErr: true}, + {in: "phone:not-a-port", wantErr: true}, + {in: "phone:70000", wantErr: true}, } for _, tt := range tests { got, err := normalizeAddr(tt.in) diff --git a/device.go b/device.go index 587c312..f417b22 100644 --- a/device.go +++ b/device.go @@ -5,6 +5,7 @@ import ( "fmt" "net" "net/netip" + "strconv" "strings" ) @@ -221,7 +222,13 @@ func normalizeAddr(addr string) (string, error) { if host == "" || port == "" { return "", fmt.Errorf("invalid device address %q", addr) } + if _, err := strconv.ParseUint(port, 10, 16); err != nil { + return "", fmt.Errorf("invalid device address %q", addr) + } return addr, nil } + if strings.Contains(addr, ":") { + return "", fmt.Errorf("invalid device address %q", addr) + } return net.JoinHostPort(addr, "5555"), nil }