30151f2aac
In reviewing CL 466875, I noticed that the implementation of splitPkgConfigOutput from CL 86541 referred to another specific implementation, and that implementation has had recent changes to fix deviations from the POSIX specification for shell argument parsing. Curious about those changes, I decided to fuzz the function to check whether it agreed in practice with the way a real shell parses arguments in POSIX mode. It turned out to deviate in several edge cases, such as backslash-escapes within single quotes, quoted empty strings, and carriage returns. (We do not expect to see carriage returns in pkg-config output anyway, but the quote handling might matter.) This change updates the implementation to refer to the POSIX documentation instead of another implementation, and confirms the behavior with a fuzz test. It may introduce minor deviations from the pkgconf implementation that was previously used as a reference, but if so it is plausible that those could be fixed upstream in pkgconf (like the other recent changes there). For #35262. Updates ##23373. Change-Id: Ifab76e94af0ca9a6d826379f4a6e2028561e615c Reviewed-on: https://go-review.googlesource.com/c/go/+/466864 Reviewed-by: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Bryan Mills <bcmills@google.com> Auto-Submit: Bryan Mills <bcmills@google.com> |
||
---|---|---|
.github | ||
api | ||
doc | ||
lib/time | ||
misc | ||
src | ||
test | ||
.gitattributes | ||
.gitignore | ||
codereview.cfg | ||
CONTRIBUTING.md | ||
go.env | ||
LICENSE | ||
PATENTS | ||
README.md | ||
SECURITY.md |
The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 4.0 Attributions license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Download and Install
Binary Distributions
Official binary distributions are available at https://go.dev/dl/.
After downloading a binary release, visit https://go.dev/doc/install for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://go.dev/doc/install/source for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines at https://go.dev/doc/contribute.
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.