Skip to content

Commit a824555

Browse files
committed
fix detecting unbalanced quotes (fixes #225)
1 parent d628c1c commit a824555

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ require (
2121
github.com/shirou/gopsutil/v4 v4.25.3
2222
github.com/sni/check_http_go/pkg/checkhttp v0.0.0-20250317143157-caa67455f3bb
2323
github.com/sni/go-flags v0.0.0-20241025124417-5e271e4d4cc9
24-
github.com/sni/shelltoken v0.0.0-20241125181525-84152f22ccd3
24+
github.com/sni/shelltoken v0.0.0-20250505124910-1de4f4c2c936
2525
github.com/spf13/cobra v1.9.1
2626
github.com/spf13/pflag v1.0.6
2727
github.com/stretchr/testify v1.10.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ github.com/sni/check_http_go/pkg/checkhttp v0.0.0-20250317143157-caa67455f3bb h1
9696
github.com/sni/check_http_go/pkg/checkhttp v0.0.0-20250317143157-caa67455f3bb/go.mod h1:Ja52a8d0K4032zY9tOXLcIh2E0e/NprRnl7nXJjebI0=
9797
github.com/sni/go-flags v0.0.0-20241025124417-5e271e4d4cc9 h1:UDgM4SP5Fd2PKVRdeUFlA/WRNHkvMNeIx0Nmw7sn21k=
9898
github.com/sni/go-flags v0.0.0-20241025124417-5e271e4d4cc9/go.mod h1:VXyAUYIG8zcjjzf5DO9KlhWTStq/PQZTZfbgW93GOPg=
99-
github.com/sni/shelltoken v0.0.0-20241125181525-84152f22ccd3 h1:ewNzm/u2121rlYTFpmieP6oFWOzF19nBbRzBGg+Lcc0=
100-
github.com/sni/shelltoken v0.0.0-20241125181525-84152f22ccd3/go.mod h1:49JJKFONnNNVv6h4WVK54oXj4KC+laTyzC0qXdAiUPw=
99+
github.com/sni/shelltoken v0.0.0-20250505124910-1de4f4c2c936 h1:q7RpM2D0LMUVscxJdthSIkw4E+OzBq/tYtSJpwnyjV0=
100+
github.com/sni/shelltoken v0.0.0-20250505124910-1de4f4c2c936/go.mod h1:+l+z+QVOUPYcXdCDwMU7+xUbVaZ7nq0EihwadTJM2gM=
101101
github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
102102
github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
103103
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=

pkg/utils/utils.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"crypto/sha512"
99
"crypto/tls"
1010
"encoding/hex"
11+
"errors"
1112
"fmt"
1213
"hash"
1314
"io"
@@ -27,6 +28,7 @@ import (
2728

2829
"github.com/consol-monitoring/snclient/pkg/convert"
2930
"github.com/kdar/factorlog"
31+
st "github.com/sni/shelltoken"
3032
)
3133

3234
var reMountPassword = regexp.MustCompile(`//.*:.*@`)
@@ -298,22 +300,25 @@ func TrimQuotesList(list []string) (res []string, err error) {
298300
// TrimQuotes returns string with quotes removed
299301
func TrimQuotes(str string) (res string, err error) {
300302
switch {
301-
case strings.HasPrefix(str, "'"):
302-
if !strings.HasSuffix(str, "'") || len(str) == 1 {
303-
return "", fmt.Errorf("unbalanced quotes in '%s'", str)
303+
case strings.HasPrefix(str, "'"),
304+
strings.HasSuffix(str, "'"),
305+
strings.HasPrefix(str, `"`),
306+
strings.HasSuffix(str, `"`):
307+
_, err = st.SplitQuotes(str, st.Whitespace, st.SplitKeepAll)
308+
if err != nil && errors.Is(err, &st.UnbalancedQuotesError{}) {
309+
return str, fmt.Errorf("unbalanced quotes in '%s'", str)
304310
}
305311
str = strings.TrimPrefix(str, "'")
306312
str = strings.TrimSuffix(str, "'")
307-
case strings.HasPrefix(str, `"`):
308-
if !strings.HasSuffix(str, `"`) || len(str) == 1 {
309-
return "", fmt.Errorf("unbalanced quotes in '%s'", str)
310-
}
313+
}
314+
315+
switch {
316+
case strings.HasPrefix(str, "'") && strings.HasSuffix(str, "'") && len(str) >= 2:
317+
str = strings.TrimPrefix(str, "'")
318+
str = strings.TrimSuffix(str, "'")
319+
case strings.HasPrefix(str, `"`) && strings.HasSuffix(str, `"`) && len(str) >= 2:
311320
str = strings.TrimPrefix(str, `"`)
312321
str = strings.TrimSuffix(str, `"`)
313-
case strings.HasSuffix(str, "'"):
314-
return "", fmt.Errorf("unbalanced quotes in '%s'", str)
315-
case strings.HasSuffix(str, `"`):
316-
return "", fmt.Errorf("unbalanced quotes in '%s'", str)
317322
}
318323

319324
return str, nil

0 commit comments

Comments
 (0)