Returns an error for a key with a '/'

This commit is contained in:
Andrew Poydence 2015-03-31 21:08:06 -06:00
parent 325e87cdaa
commit 3f6a912af6
2 changed files with 12 additions and 0 deletions

View File

@ -168,6 +168,10 @@ func (k *KV) Release(p *KVPair, q *WriteOptions) (bool, *WriteMeta, error) {
}
func (k *KV) put(key string, params map[string]string, body []byte, q *WriteOptions) (bool, *WriteMeta, error) {
if len(key) > 0 && key[0] == '/' {
return false, nil, fmt.Errorf("Invalid key. Key must not begin with a '/': %s", key)
}
r := k.c.newRequest("PUT", "/v1/kv/"+key)
r.setWriteOptions(q)
for param, val := range params {

View File

@ -30,6 +30,14 @@ func TestClientPutGetDelete(t *testing.T) {
t.Fatalf("err: %v", err)
}
// Put a key that begins with a '/'
invalidKey := "/test"
value = []byte(invalidKey)
p = &KVPair{Key: key, Flags: 42, Value: value}
if _, err := kv.Put(p, nil); err == nil {
t.Fatalf("Invalid key not detected: %s", invalidKey)
}
// Get should work
pair, meta, err := kv.Get(key, nil)
if err != nil {