From 66d9b77c0f56c77fe4e897d9f77f47546150a7d0 Mon Sep 17 00:00:00 2001 From: Waldemar Quevedo Date: Wed, 21 Apr 2021 16:00:49 -0700 Subject: [PATCH] jsm: Check that stream name is valid Signed-off-by: Waldemar Quevedo --- jsm.go | 8 ++++++++ test/js_test.go | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/jsm.go b/jsm.go index 6b1900fa6..85ee3817c 100644 --- a/jsm.go +++ b/jsm.go @@ -532,6 +532,10 @@ func (js *js) AddStream(cfg *StreamConfig, opts ...JSOpt) (*StreamInfo, error) { return nil, ErrStreamNameRequired } + if strings.Contains(cfg.Name, ".") { + return nil, ErrInvalidStreamName + } + req, err := json.Marshal(cfg) if err != nil { return nil, err @@ -555,6 +559,10 @@ func (js *js) AddStream(cfg *StreamConfig, opts ...JSOpt) (*StreamInfo, error) { type streamInfoResponse = streamCreateResponse func (js *js) StreamInfo(stream string, opts ...JSOpt) (*StreamInfo, error) { + if strings.Contains(stream, ".") { + return nil, ErrInvalidStreamName + } + o, cancel, err := getJSContextOpts(js.opts, opts...) if err != nil { return nil, err diff --git a/test/js_test.go b/test/js_test.go index 116d76972..f4f003493 100644 --- a/test/js_test.go +++ b/test/js_test.go @@ -1584,6 +1584,20 @@ func TestJetStreamManagement(t *testing.T) { } }) + t.Run("create bad stream", func(t *testing.T) { + _, err := js.AddStream(&nats.StreamConfig{Name: "foo.invalid"}) + if err != nats.ErrInvalidStreamName { + t.Fatalf("Unexpected error: %v", err) + } + }) + + t.Run("bad stream info", func(t *testing.T) { + _, err := js.StreamInfo("foo.invalid") + if err != nats.ErrInvalidStreamName { + t.Fatalf("Unexpected error: %v", err) + } + }) + t.Run("stream update", func(t *testing.T) { if _, err := js.UpdateStream(nil); err == nil { t.Fatal("Unexpected success")