Kaynağa Gözat

control character in string is invalid

Tao Wen 8 yıl önce
ebeveyn
işleme
c38e47d169
2 değiştirilmiş dosya ile 9 ekleme ve 1 silme
  1. 5 0
      feature_iter_string.go
  2. 4 1
      jsoniter_string_test.go

+ 5 - 0
feature_iter_string.go

@@ -2,6 +2,7 @@ package jsoniter
 
 import (
 	"unicode/utf16"
+	"fmt"
 )
 
 // ReadString read string from iterator
@@ -16,6 +17,10 @@ func (iter *Iterator) ReadString() (ret string) {
 				return ret
 			} else if c == '\\' {
 				break
+			} else if c < ' ' {
+				iter.ReportError("ReadString",
+					fmt.Sprintf(`invalid control character found: %d`, c))
+				return
 			}
 		}
 		return iter.readStringSlowPath()

+ 4 - 1
jsoniter_string_test.go

@@ -19,7 +19,10 @@ func Test_read_string(t *testing.T) {
 		`"\"`,
 		`"\\\"`,
 		"\"\n\"",
-		`navy`,
+	}
+	for i :=0; i < 32; i++ {
+		// control characters are invalid
+		badInputs = append(badInputs, string([]byte{'"', byte(i), '"'}))
 	}
 
 	for _, input := range badInputs {