mirror of
https://github.com/golang/go
synced 2024-11-24 07:10:18 -07:00
go/doc: fix incorrect identifier parsing in comments
This code was trying to iterate codepoints, but didn't reslice the string,
so it was reading the first codepoint over and over, if the string length was
not a multiple of the first codepoint length, this would cause to overshoot
past the end of the string.
This was a latent bug introduced in CL 384265 but was revealed to
Ngolo-fuzzing in OSS-Fuzz in CL 397277.
Fixes #52353
Change-Id: I13f0352e6ad13a42878927f3b1c18c58360dd40c
GitHub-Last-Rev: 424f6cfad1
GitHub-Pull-Request: golang/go#52356
Reviewed-on: https://go-review.googlesource.com/c/go/+/400240
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
e3982660a7
commit
e704ef2b85
@ -1063,7 +1063,7 @@ func ident(s string) (id string, ok bool) {
|
||||
}
|
||||
break
|
||||
}
|
||||
r, nr := utf8.DecodeRuneInString(s)
|
||||
r, nr := utf8.DecodeRuneInString(s[n:])
|
||||
if unicode.IsLetter(r) {
|
||||
n += nr
|
||||
continue
|
||||
|
12
src/go/doc/comment/parse_test.go
Normal file
12
src/go/doc/comment/parse_test.go
Normal file
@ -0,0 +1,12 @@
|
||||
// Copyright 2022 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package comment
|
||||
|
||||
import "testing"
|
||||
|
||||
// See https://golang.org/issue/52353
|
||||
func Test52353(t *testing.T) {
|
||||
ident("𫕐ﯯ")
|
||||
}
|
Loading…
Reference in New Issue
Block a user