Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Search: update validation for search strings containing spaces #47

Merged
merged 28 commits into from
Jul 10, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
4928f71
initial implementation
mastercactapus Jun 3, 2019
bbbf339
add comment and tests
mastercactapus Jun 3, 2019
031cfaa
add more comments
mastercactapus Jun 3, 2019
63e80c0
finish updating middleware method (oops)
mastercactapus Jun 3, 2019
8123563
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 3, 2019
51a212a
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 4, 2019
36e8fa0
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 4, 2019
582b1fe
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 4, 2019
49cd6c6
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 5, 2019
257a4ee
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 6, 2019
2c65dc9
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 7, 2019
f301d97
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 13, 2019
a4c1af7
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 18, 2019
95a5b93
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 19, 2019
1386614
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 21, 2019
588fdee
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 27, 2019
b65c149
Merge branch 'master' of https://github.com/target/goalert
arurao Jun 27, 2019
2543944
Merge branch 'master' of https://github.com/target/goalert
arurao Jul 1, 2019
a525166
Merge branch 'master' of https://github.com/target/goalert
arurao Jul 2, 2019
790a955
Merge branch 'master' of https://github.com/target/goalert
arurao Jul 2, 2019
2923a4e
Merge branch 'master' of https://github.com/target/goalert
arurao Jul 2, 2019
1f4c65f
Merge branch 'master' of https://github.com/target/goalert
arurao Jul 3, 2019
a4ce90a
Merge branch 'master' of https://github.com/target/goalert
arurao Jul 9, 2019
785bfd8
new search validation function
arurao Jul 9, 2019
2769ee4
replacing text validation to search validation
arurao Jul 9, 2019
c27c300
remove comment
arurao Jul 9, 2019
2839966
formatting
arurao Jul 9, 2019
df03551
tweak
arurao Jul 10, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion alert/legacysearch.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func (db *DB) LegacySearch(ctx context.Context, opts *LegacySearchOptions) ([]Al
validate.Range("Limit", opts.Limit, 15, 50),
validate.Range("Offset", opts.Offset, 0, 1000000),
validate.OneOf("SortBy", opts.SortBy, SortByID, SortByStatus, SortByCreatedTime, SortBySummary, SortByServiceName),
validate.Text("Search", opts.Search, 0, 250),
validate.Search("Search", opts.Search),
)
if opts.FavoriteServicesOnlyUserID != "" {
err = validate.Many(err, validate.UUID("FavoriteServicesOnlyUserID", opts.FavoriteServicesOnlyUserID))
Expand Down
2 changes: 1 addition & 1 deletion alert/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func (opts renderData) Normalize() (*renderData, error) {
}

err := validate.Many(
validate.Text("Search", opts.Search, 0, search.MaxQueryLen),
validate.Search("Search", opts.Search),
validate.Range("Limit", opts.Limit, 0, search.MaxResults),
validate.Range("Status", len(opts.Status), 0, 3),
validate.ManyUUID("Services", opts.Services, 50),
Expand Down
2 changes: 1 addition & 1 deletion escalation/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func (opts renderData) Normalize() (*renderData, error) {
}

err := validate.Many(
validate.Text("Search", opts.Search, 0, search.MaxQueryLen),
validate.Search("Search", opts.Search),
validate.Range("Limit", opts.Limit, 0, search.MaxResults),
validate.ManyUUID("Omit", opts.Omit, 50),
)
Expand Down
2 changes: 1 addition & 1 deletion label/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ func (opts renderData) Normalize() (*renderData, error) {
}

err := validate.Many(
validate.Text("Search", opts.Search, 0, search.MaxQueryLen),
validate.Search("Search", opts.Search),
validate.Range("Limit", opts.Limit, 0, search.MaxResults),
validate.Range("Omit", len(opts.Omit), 0, 50),
)
Expand Down
2 changes: 1 addition & 1 deletion schedule/rotation/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func (opts renderData) Normalize() (*renderData, error) {
}

err := validate.Many(
validate.Text("Search", opts.Search, 0, search.MaxQueryLen),
validate.Search("Search", opts.Search),
validate.Range("Limit", opts.Limit, 0, search.MaxResults),
validate.ManyUUID("Omit", opts.Omit, 50),
)
Expand Down
2 changes: 1 addition & 1 deletion schedule/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func (opts renderData) Normalize() (*renderData, error) {
opts.Limit = search.DefaultMaxResults
}
err := validate.Many(
validate.Text("Search", opts.Search, 0, search.MaxQueryLen),
validate.Search("Search", opts.Search),
validate.Range("Limit", opts.Limit, 0, search.MaxResults),
validate.ManyUUID("Omit", opts.Omit, 50),
)
Expand Down
2 changes: 1 addition & 1 deletion service/legacysearch.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func (db *DB) LegacySearch(ctx context.Context, opts *LegacySearchOptions) ([]Se
return nil, err
}

err = validate.Text("Search", opts.Search, 0, 250)
err = validate.Search("Search", opts.Search)
if opts.FavoritesOnly || opts.FavoritesFirst || opts.FavoritesUserID != "" {
err = validate.Many(err, validate.UUID("FavoritesUserID", opts.FavoritesUserID))
}
Expand Down
2 changes: 1 addition & 1 deletion service/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ func (opts renderData) Normalize() (*renderData, error) {
}

err := validate.Many(
validate.Text("Search", opts.Search, 0, search.MaxQueryLen),
validate.Search("Search", opts.Search),
validate.Range("Limit", opts.Limit, 0, search.MaxResults),
validate.ManyUUID("Omit", opts.Omit, 50),
)
Expand Down
2 changes: 1 addition & 1 deletion timezone/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func (opts renderData) Normalize() (*renderData, error) {
}

err := validate.Many(
validate.Text("Search", opts.Search, 0, search.MaxQueryLen),
validate.Search("Search", opts.Search),
validate.Range("Limit", opts.Limit, 0, search.MaxResults),
validate.Range("Omit", len(opts.Omit), 0, 50),
)
Expand Down
2 changes: 1 addition & 1 deletion user/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func (opts renderData) Normalize() (*renderData, error) {
}

err := validate.Many(
validate.Text("Search", opts.Search, 0, search.MaxQueryLen),
validate.Search("Search", opts.Search),
validate.Range("Limit", opts.Limit, 0, search.MaxResults),
validate.ManyUUID("Omit", opts.Omit, 50),
)
Expand Down
30 changes: 30 additions & 0 deletions validation/validate/search.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package validate

import (
"unicode"

"github.com/target/goalert/validation"
)

// Search will validate a search body. It ensures that the field
// consists of valid unicode code-points, and does not exceed max of 255 characters.
// If body is empty, the input is considered valid.
func Search(fname, body string) error {
if body == "" {
return nil
}

r := []rune(body)

if len(r) > 255 {
return validation.NewFieldError(fname, "cannot exceed 255 characters")
}

for _, c := range r {
if !unicode.IsPrint(c) && c != '\t' && c != '\n' {
return validation.NewFieldError(fname, "only printable characters allowed")
}
}

return nil
}