go/src/debug
Bryan C. Mills 9cec77ac11 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>
2022-02-09 19:44:03 +00:00
..
buildinfo runtime/debug: replace (*BuildInfo).Marshal methods with Parse and String 2022-02-09 19:44:03 +00:00
dwarf debug/dwarf: fix problems with handling of bit offsets for bitfields 2022-01-28 20:07:54 +00:00
elf debug/elf: do not read unrelated bytes for SHT_NOBITS sections 2022-01-14 18:20:45 +00:00
gosym all: gofmt -w -r 'interface{} -> any' src 2021-12-13 18:45:54 +00:00
macho all: gofmt -w -r 'interface{} -> any' src 2021-12-13 18:45:54 +00:00
pe all: gofmt -w -r 'interface{} -> any' src 2021-12-13 18:45:54 +00:00
plan9obj all: gofmt -w -r 'interface{} -> any' src 2021-12-13 18:45:54 +00:00