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)