]> Cypherpunks repositories - gostls13.git/commit
runtime/debug: replace (*BuildInfo).Marshal methods with Parse and String
authorBryan C. Mills <bcmills@google.com>
Tue, 8 Feb 2022 17:23:50 +0000 (12:23 -0500)
committerBryan Mills <bcmills@google.com>
Wed, 9 Feb 2022 19:44:03 +0000 (19:44 +0000)
commit9cec77ac11b012283e654b423cf85cf9976bedd9
tree196b294e0c4979c7c1f7b4c6bd950080e05aef7f
parentbe0d049a42ee4b07bfb71acb5e8f7c3d2735049a
runtime/debug: replace (*BuildInfo).Marshal methods with Parse and String

Since a String method cannot return an error, escape fields that may
contain unsanitized values, and unescape them during parsing.

Add a fuzz test to verify that calling the String method on any
BuildInfo returned by Parse produces a string that parses to the same
BuildInfo. (Note that this doesn't ensure that String always produces
a parseable input: we assume that a user constructing a BuildInfo
provides valid paths and versions, so we don't bother to escape those.
It also doesn't ensure that ParseBuildInfo accepts all inputs that
ought to be valid.)

Fixes #51026

Change-Id: Ida18010ce47622cfedb1494060f32bd7705df014
Reviewed-on: https://go-review.googlesource.com/c/go/+/384154
Trust: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
api/go1.18.txt
src/cmd/go/internal/load/pkg.go
src/cmd/go/internal/version/version.go
src/debug/buildinfo/buildinfo.go
src/debug/buildinfo/buildinfo_test.go
src/runtime/debug/mod.go
src/runtime/debug/mod_test.go [new file with mode: 0644]