diff options
| author | Joe Tsai <joetsai@digital-static.net> | 2017-10-23 14:43:51 -0700 |
|---|---|---|
| committer | Joe Tsai <thebrokentoaster@gmail.com> | 2017-10-25 01:43:46 +0000 |
| commit | e7fed7fa353fa8a54759229a0adfe04c02fd7b5a (patch) | |
| tree | 555503805cfcb826722cdf24dbd989ec1479d819 /src/encoding/csv/reader_test.go | |
| parent | aedb79f092be44f13faa7a40ed195b1bf0d27855 (diff) | |
| download | go-e7fed7fa353fa8a54759229a0adfe04c02fd7b5a.tar.xz | |
encoding/csv: forbid certain Comma and Comment runes
The record delimiter (not configurable by user) is "\r\n" or "\n".
It is insensible for the user to set Comma or Comment delimiters
to be some character that conflicts with the record delimiter.
Furthermore, it is insensible for Comma or Comment to be the same rune.
Allowing this leaks implementation details to the user in regards to
the evaluation order of which rune is checked for first.
Fixes #22404
Change-Id: I31e86abc9b3a8fb4584e090477795587740970ae
Reviewed-on: https://go-review.googlesource.com/72793
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/encoding/csv/reader_test.go')
| -rw-r--r-- | src/encoding/csv/reader_test.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/encoding/csv/reader_test.go b/src/encoding/csv/reader_test.go index ed7d89dfe0..48efbb6719 100644 --- a/src/encoding/csv/reader_test.go +++ b/src/encoding/csv/reader_test.go @@ -9,6 +9,7 @@ import ( "reflect" "strings" "testing" + "unicode/utf8" ) func TestRead(t *testing.T) { @@ -312,6 +313,35 @@ x,,, Input: `"""""""`, Output: [][]string{{`"""`}}, LazyQuotes: true, + }, { + Name: "BadComma1", + Comma: '\n', + Error: errInvalidDelim, + }, { + Name: "BadComma2", + Comma: '\r', + Error: errInvalidDelim, + }, { + Name: "BadComma3", + Comma: utf8.RuneError, + Error: errInvalidDelim, + }, { + Name: "BadComment1", + Comment: '\n', + Error: errInvalidDelim, + }, { + Name: "BadComment2", + Comment: '\r', + Error: errInvalidDelim, + }, { + Name: "BadComment3", + Comment: utf8.RuneError, + Error: errInvalidDelim, + }, { + Name: "BadCommaComment", + Comma: 'X', + Comment: 'X', + Error: errInvalidDelim, }} for _, tt := range tests { |
