diff --git a/selfupdate/selfupdate.go b/selfupdate/selfupdate.go index 1a0edfb..cd033d1 100644 --- a/selfupdate/selfupdate.go +++ b/selfupdate/selfupdate.go @@ -657,6 +657,7 @@ func ExtractChecksum(body, assetName string) string { continue } fname := strings.TrimPrefix(fields[1], "*") + fname = strings.TrimPrefix(fname, "./") if fname == assetName { if match := re.FindString(fields[0]); match != "" { return strings.ToLower(match) diff --git a/selfupdate/selfupdate_test.go b/selfupdate/selfupdate_test.go index 3696bb7..b3c514c 100644 --- a/selfupdate/selfupdate_test.go +++ b/selfupdate/selfupdate_test.go @@ -1786,6 +1786,8 @@ func TestExtractChecksum(t *testing.T) { {"no match", fmt.Sprintf("%s tool_linux_amd64.tar.gz", testHash64), "tool_darwin_arm64.tar.gz", ""}, {"substring filename", fmt.Sprintf("%s tool_darwin_arm64.tar.gz.sig", testHash64), "tool_darwin_arm64.tar.gz", ""}, {"binary star", fmt.Sprintf("%s *tool_darwin_arm64.tar.gz", testHash64), "tool_darwin_arm64.tar.gz", testHash64}, + {"leading dot slash", fmt.Sprintf("%s ./tool_darwin_arm64.tar.gz", testHash64), "tool_darwin_arm64.tar.gz", testHash64}, + {"binary star leading dot slash", fmt.Sprintf("%s *./tool_darwin_arm64.tar.gz", testHash64), "tool_darwin_arm64.tar.gz", testHash64}, {"trailing comment", fmt.Sprintf("%s tool_darwin_arm64.tar.gz # comment", testHash64), "tool_darwin_arm64.tar.gz", testHash64}, }