From 66cbf67345b1631adbee2109f5bb78fb4e321144 Mon Sep 17 00:00:00 2001 From: Stephen Eckels Date: Sat, 4 Jun 2022 20:39:36 +0000 Subject: [PATCH] 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 --- src/cmd/buildid/buildid.go | 5 +++++ 1 file changed, 5 insertions(+) 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) -- 2.48.1