Skip to content

Commit f9b6ae1

Browse files
SNOW-2249369: fix: remove trailing spaces for ip address string in target files (#584)
1 parent 14a3c95 commit f9b6ae1

File tree

3 files changed

+49
-5
lines changed

3 files changed

+49
-5
lines changed

cmd/sanssh/main.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,16 @@ func main() {
167167
defer f.Close()
168168
scanner := bufio.NewScanner(f)
169169
for scanner.Scan() {
170-
*targetsFlag.Target = append(*targetsFlag.Target, scanner.Text())
170+
line := scanner.Text()
171+
target := strings.TrimSpace(line)
172+
// Warn if whitespace was trimmed to help users clean up their files
173+
if len(target) != len(line) && target != "" {
174+
log.Printf("Warning: trimmed whitespace from target %q in %s", line, *targetsFile)
175+
}
176+
// Skip empty lines (including lines with only whitespace)
177+
if target != "" {
178+
*targetsFlag.Target = append(*targetsFlag.Target, target)
179+
}
171180
}
172181
if err := scanner.Err(); err != nil {
173182
log.Fatalf("scanning error reading %s: %v", *targetsFile, err)

services/util/util.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ import (
2121
"bytes"
2222
"context"
2323
"fmt"
24-
writerUtils "github.com/Snowflake-Labs/sansshell/services/util/writer"
25-
"golang.org/x/term"
2624
"io"
2725
"os"
2826
"os/exec"
@@ -31,6 +29,9 @@ import (
3129
"strings"
3230
"syscall"
3331

32+
writerUtils "github.com/Snowflake-Labs/sansshell/services/util/writer"
33+
"golang.org/x/term"
34+
3435
"github.com/go-logr/logr"
3536
"github.com/google/go-cmp/cmp"
3637
"google.golang.org/grpc/codes"
@@ -370,8 +371,12 @@ func (s *StringSliceCommaOrWhitespaceFlag) Set(val string) error {
370371
s.Target = new([]string)
371372
}
372373
for _, vals := range strings.Fields(val) {
373-
374-
*s.Target = append(*s.Target, strings.Split(vals, ",")...)
374+
for _, target := range strings.Split(vals, ",") {
375+
trimmed := strings.TrimSpace(target)
376+
if trimmed != "" {
377+
*s.Target = append(*s.Target, trimmed)
378+
}
379+
}
375380
}
376381
return nil
377382
}

services/util/util_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,36 @@ baz`,
330330
wantTarget: []string{"foo", "bar", "baz"},
331331
wantString: "foo,bar,baz",
332332
},
333+
{
334+
desc: "trailing spaces in comma separated",
335+
input: "foo , bar , baz ",
336+
wantTarget: []string{"foo", "bar", "baz"},
337+
wantString: "foo,bar,baz",
338+
},
339+
{
340+
desc: "trailing spaces in space separated",
341+
input: "foo bar baz ",
342+
wantTarget: []string{"foo", "bar", "baz"},
343+
wantString: "foo,bar,baz",
344+
},
345+
{
346+
desc: "leading and trailing spaces",
347+
input: " foo , bar , baz ",
348+
wantTarget: []string{"foo", "bar", "baz"},
349+
wantString: "foo,bar,baz",
350+
},
351+
{
352+
desc: "tabs and multiple spaces",
353+
input: "foo\t,\tbar\t\t,\tbaz\t",
354+
wantTarget: []string{"foo", "bar", "baz"},
355+
wantString: "foo,bar,baz",
356+
},
357+
{
358+
desc: "empty strings are filtered out",
359+
input: "foo, , bar, , baz",
360+
wantTarget: []string{"foo", "bar", "baz"},
361+
wantString: "foo,bar,baz",
362+
},
333363
} {
334364
t.Run(tc.desc, func(t *testing.T) {
335365
var flag StringSliceCommaOrWhitespaceFlag

0 commit comments

Comments
 (0)