cmd/tailscale/cli: don't permit setting self IP as exit node (#1491)

This change makes it impossible to set your own IP address as the exit node for this system.

Fixes #1489

Signed-off-by: Christine Dodrill <xe@tailscale.com>
This commit is contained in:
Christine Dodrill
2021-03-15 15:44:56 -04:00
committed by GitHub
parent ab2a8a7493
commit deff20edc6
2 changed files with 23 additions and 7 deletions

View File

@@ -53,12 +53,7 @@ var statusArgs struct {
peers bool // in CLI mode, show status of peer machines
}
func runStatus(ctx context.Context, args []string) error {
c, bc, ctx, cancel := connect(ctx)
defer cancel()
bc.AllowVersionSkew = true
func getStatusFromServer(ctx context.Context, c net.Conn, bc *ipn.BackendClient) func() (*ipnstate.Status, error) {
ch := make(chan *ipnstate.Status, 1)
bc.SetNotifyCallback(func(n ipn.Notify) {
if n.ErrMessage != nil {
@@ -80,7 +75,7 @@ func runStatus(ctx context.Context, args []string) error {
})
go pump(ctx, bc, c)
getStatus := func() (*ipnstate.Status, error) {
return func() (*ipnstate.Status, error) {
bc.RequestStatus()
select {
case st := <-ch:
@@ -89,6 +84,15 @@ func runStatus(ctx context.Context, args []string) error {
return nil, ctx.Err()
}
}
}
func runStatus(ctx context.Context, args []string) error {
c, bc, ctx, cancel := connect(ctx)
defer cancel()
bc.AllowVersionSkew = true
getStatus := getStatusFromServer(ctx, c, bc)
st, err := getStatus()
if err != nil {
return err