diff --git a/CHANGELOG.md b/CHANGELOG.md index 2289fd18331..acb0fd266d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ 1. [19043](https://github.com/influxdata/influxdb/pull/19043): Enforce all influx CLI flag args are valid 1. [19188](https://github.com/influxdata/influxdb/pull/19188): Dashboard cells correctly map results when multiple queries exist 1. [19146](https://github.com/influxdata/influxdb/pull/19146): Dashboard cells and overlay use UTC as query time when toggling to UTC timezone +1. [19222](https://github.com/influxdata/influxdb/pull/19222): Bucket names may not include quotation marks ## v2.0.0-beta.15 [2020-07-23] diff --git a/http/bucket_service.go b/http/bucket_service.go index d0548bb8663..1819a887491 100644 --- a/http/bucket_service.go +++ b/http/bucket_service.go @@ -361,10 +361,7 @@ func (b *postBucketRequest) OK() error { // names starting with an underscore are reserved for system buckets if err := validBucketName(b.toInfluxDB()); err != nil { - return &influxdb.Error{ - Code: influxdb.EUnprocessableEntity, - Msg: err.Error(), - } + return err } return nil diff --git a/tenant/http_server_bucket.go b/tenant/http_server_bucket.go index 5fdb1811d30..f2139506219 100644 --- a/tenant/http_server_bucket.go +++ b/tenant/http_server_bucket.go @@ -313,10 +313,7 @@ func (b *postBucketRequest) OK() error { // names starting with an underscore are reserved for system buckets if err := validBucketName(b.toInfluxDB()); err != nil { - return &influxdb.Error{ - Code: influxdb.EUnprocessableEntity, - Msg: err.Error(), - } + return err } return nil @@ -498,5 +495,13 @@ func validBucketName(bucket *influxdb.Bucket) error { Msg: fmt.Sprintf("bucket name %s is invalid. Buckets may not start with underscore", bucket.Name), } } + // quotation marks will cause queries to fail + if strings.Contains(bucket.Name, "\"") { + return &influxdb.Error{ + Code: influxdb.EInvalid, + Op: "http/bucket", + Msg: fmt.Sprintf("bucket name %s is invalid. Bucket names may not include quotation marks", bucket.Name), + } + } return nil } diff --git a/testing/bucket_service.go b/testing/bucket_service.go index 87a54b7de83..6b294baae5e 100644 --- a/testing/bucket_service.go +++ b/testing/bucket_service.go @@ -346,6 +346,30 @@ func CreateBucket( }, }, }, + { + name: "create bucket with illegal quotation mark", + fields: BucketFields{ + IDGenerator: mock.NewIDGenerator(bucketOneID, t), + OrgBucketIDs: mock.NewIDGenerator(bucketOneID, t), + TimeGenerator: mock.TimeGenerator{FakeValue: time.Date(2006, 5, 4, 1, 2, 3, 0, time.UTC)}, + Buckets: []*influxdb.Bucket{}, + Organizations: []*influxdb.Organization{}, + }, + args: args{ + bucket: &influxdb.Bucket{ + Name: "namewith\"quote", + OrgID: MustIDBase16(orgOneID), + }, + }, + wants: wants{ + buckets: []*influxdb.Bucket{}, + err: &influxdb.Error{ + Code: influxdb.EInvalid, + Msg: "bucket name namewith\"quote is invalid. Bucket names may not include quotation marks", + Op: influxdb.OpCreateBucket, + }, + }, + }, } for _, tt := range tests {