From: Stephen Eckels Date: Sat, 4 Jun 2022 20:39:36 +0000 (+0000) Subject: cmd/buildid: reject rewriting legacy buildids X-Git-Tag: go1.19beta1~64 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=66cbf67345b1631adbee2109f5bb78fb4e321144;p=gostls13.git cmd/buildid: reject rewriting legacy buildids This resolves legacy go binaries crashing the buildid tool when the -w flag is specified. Fixes #50809 Change-Id: I55a866f285a3c2cebcf2cdbb9cc30e5078e1d18f GitHub-Last-Rev: 7169a58fd7ba17fdeb8037cef3f50080169dc137 GitHub-Pull-Request: golang/go#53163 Reviewed-on: https://go-review.googlesource.com/c/go/+/409535 Run-TryBot: Ian Lance Taylor Auto-Submit: Ian Lance Taylor TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor Reviewed-by: Dmitri Shuralyov --- diff --git a/src/cmd/buildid/buildid.go b/src/cmd/buildid/buildid.go index 8e02a7ae10..72ad80dbbb 100644 --- a/src/cmd/buildid/buildid.go +++ b/src/cmd/buildid/buildid.go @@ -53,6 +53,11 @@ func main() { log.Fatal(err) } + // <= go 1.7 doesn't embed the contentID or actionID, so no slash is present + if !strings.Contains(id, "/") { + log.Fatalf("%s: build ID is a legacy format...binary too old for this tool", file) + } + newID := id[:strings.LastIndex(id, "/")] + "/" + buildid.HashToString(hash) if len(newID) != len(id) { log.Fatalf("%s: build ID length mismatch %q vs %q", file, id, newID)