Skip to content

Commit

Permalink
Merge pull request #2635 from hashicorp/kv-put-crash
Browse files Browse the repository at this point in the history
cli: Fix panic on empty data argument to `kv put`
  • Loading branch information
slackpad authored Jan 5, 2017
2 parents 1992129 + ae83b71 commit 66f3a0f
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
5 changes: 5 additions & 0 deletions command/kv_put.go
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,11 @@ func (c *KVPutCommand) dataFromArgs(args []string) (string, string, error) {
key := args[0]
data := args[1]

// Handle empty quoted shell parameters
if len(data) == 0 {
return key, "", nil
}

switch data[0] {
case '@':
data, err := ioutil.ReadFile(data[1:])
Expand Down
28 changes: 28 additions & 0 deletions command/kv_put_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,34 @@ func TestKVPutCommand_Run(t *testing.T) {
}
}

func TestKVPutCommand_RunEmptyDataQuoted(t *testing.T) {
srv, client := testAgentWithAPIClient(t)
defer srv.Shutdown()
waitForLeader(t, srv.httpAddr)

ui := new(cli.MockUi)
c := &KVPutCommand{Ui: ui}

args := []string{
"-http-addr=" + srv.httpAddr,
"foo", "",
}

code := c.Run(args)
if code != 0 {
t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String())
}

data, _, err := client.KV().Get("foo", nil)
if err != nil {
t.Fatal(err)
}

if data.Value != nil {
t.Errorf("bad: %#v", data.Value)
}
}

func TestKVPutCommand_RunBase64(t *testing.T) {
srv, client := testAgentWithAPIClient(t)
defer srv.Shutdown()
Expand Down

0 comments on commit 66f3a0f

Please sign in to comment.