From cc3d941853c47fc099ba6bd3ea133d8e818cb67a Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 10 Feb 2020 17:54:11 +0100 Subject: [PATCH] iso checksumming: use checksum or checksum url if set to handle all cases fix #8322 --- common/iso_config.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/common/iso_config.go b/common/iso_config.go index 0836035c8..338bafaf5 100644 --- a/common/iso_config.go +++ b/common/iso_config.go @@ -7,7 +7,6 @@ import ( "encoding/hex" "errors" "fmt" - "net/url" "strings" getter "github.com/hashicorp/go-getter/v2" @@ -160,14 +159,13 @@ func (c *ISOConfig) Prepare(*interpolate.Context) (warnings []string, errs []err errs = append(errs, fmt.Errorf("A checksum must be specified")) } if c.ISOChecksumType == "file" { - u, err := url.Parse(c.ISOUrls[0]) - if err != nil { - errs = append(errs, fmt.Errorf("error parsing URL <%s>: %s", - c.ISOUrls[0], err)) + url := c.ISOChecksum + if c.ISOChecksumURL != "" { + url = c.ISOChecksumURL } - cksum, err := getter.DefaultClient.ChecksumFromFile(context.TODO(), c.ISOChecksumURL, u.Path) - if cksum == nil || err != nil { - errs = append(errs, fmt.Errorf("Couldn't extract checksum from checksum file")) + cksum, err := getter.DefaultClient.ChecksumFromFile(context.TODO(), url, c.ISOUrls[0]) + if err != nil { + errs = append(errs, fmt.Errorf("Couldn't extract checksum from checksum file: %v", err)) } else { c.ISOChecksumType = cksum.Type c.ISOChecksum = hex.EncodeToString(cksum.Value)