From 4e7d0f722bc3e2190748d1bad1861505c7025712 Mon Sep 17 00:00:00 2001 From: debarshibasak Date: Mon, 9 Feb 2026 18:51:47 +0100 Subject: [PATCH 1/2] invalid handling of empty values in sqlcmd --- cmd/sqlcmd/sqlcmd.go | 6 +++--- cmd/sqlcmd/sqlcmd_test.go | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cmd/sqlcmd/sqlcmd.go b/cmd/sqlcmd/sqlcmd.go index 7d69b24b..4e2adbe7 100644 --- a/cmd/sqlcmd/sqlcmd.go +++ b/cmd/sqlcmd/sqlcmd.go @@ -331,20 +331,20 @@ func checkDefaultValue(args []string, i int) (val string) { 'L': "|", // | is the sentinel for no value since users are unlikely to use it. It's "reserved" in most shells 'X': "0", } - if isFlag(args[i]) && len(args[i]) == 2 && (len(args) == i+1 || args[i+1][0] == '-') { + if isFlag(args[i]) && len(args[i]) == 2 && (len(args) == i+1 || isFlag(args[i+1])) { if v, ok := flags[rune(args[i][1])]; ok { val = v return } } - if args[i] == "-N" && (len(args) == i+1 || args[i+1][0] == '-') { + if args[i] == "-N" && (len(args) == i+1 || isFlag(args[i+1])) { val = "true" } return } func isFlag(arg string) bool { - return arg[0] == '-' + return len(arg) > 0 && arg[0] == '-' } func isListFlag(arg string) bool { diff --git a/cmd/sqlcmd/sqlcmd_test.go b/cmd/sqlcmd/sqlcmd_test.go index 511816b2..e431c223 100644 --- a/cmd/sqlcmd/sqlcmd_test.go +++ b/cmd/sqlcmd/sqlcmd_test.go @@ -584,6 +584,11 @@ func TestConvertOsArgs(t *testing.T) { []string{"-X", "-k2"}, []string{"-X", "0", "-k2"}, }, + { + "flag with empty value", + []string{"-S", "server", "-U", "sa", "-d", "", "-Q", "SELECT 1", "-b"}, + []string{"-S", "server", "-U", "sa", "-d", "", "-Q", "SELECT 1", "-b"}, + }, } for _, c := range tests { t.Run(c.name, func(t *testing.T) { From 3459de90d3b52eb2f434f2a88837fcd5d32708a0 Mon Sep 17 00:00:00 2001 From: debarshibasak Date: Tue, 10 Feb 2026 01:30:04 +0100 Subject: [PATCH 2/2] tests fixed --- cmd/sqlcmd/sqlcmd_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/sqlcmd/sqlcmd_test.go b/cmd/sqlcmd/sqlcmd_test.go index e431c223..09c10d31 100644 --- a/cmd/sqlcmd/sqlcmd_test.go +++ b/cmd/sqlcmd/sqlcmd_test.go @@ -593,7 +593,7 @@ func TestConvertOsArgs(t *testing.T) { for _, c := range tests { t.Run(c.name, func(t *testing.T) { actual := convertOsArgs(c.in) - assert.ElementsMatch(t, c.expected, actual, "Incorrect converted args") + assert.Equal(t, c.expected, actual, "Incorrect converted args") }) } }