1
0
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:
Jorropo 2022-04-15 22:02:21 +00:00 committed by Dmitri Shuralyov
parent e3982660a7
commit e704ef2b85
2 changed files with 13 additions and 1 deletions

View File

@ -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

View 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("𫕐ﯯ")
}