diff --git a/checksum.go b/checksum.go index eeccfea9d..f1090839f 100644 --- a/checksum.go +++ b/checksum.go @@ -259,7 +259,10 @@ func (c *Client) ChecksumFromFile(checksumFile string, src *url.URL) (*FileCheck return nil, fmt.Errorf( "Error reading checksum file: %s", err) } - break + if line == "" { + break + } + // parse the line, if we hit EOF, but the line is not empty } checksum, err := parseChecksumLine(line) if err != nil || checksum == nil { diff --git a/get_test.go b/get_test.go index d70aed881..a575b826e 100644 --- a/get_test.go +++ b/get_test.go @@ -427,6 +427,12 @@ func TestGetFile_checksum_from_file(t *testing.T) { true, false, }, + { + // checksum file does not have EOL, ends line with EOF + "?checksum=file:" + httpChecksums.URL + "/sha512-p-EOF.sum", + true, + false, + }, } for _, tc := range cases { diff --git a/testdata/checksum-file/sha512-p-EOF.sum b/testdata/checksum-file/sha512-p-EOF.sum new file mode 100644 index 000000000..2c72e8817 --- /dev/null +++ b/testdata/checksum-file/sha512-p-EOF.sum @@ -0,0 +1 @@ +060a8cc41c501e41b4537029661090597aeb4366702ac3cae8959f24b2c49005d6bd339833ebbeb481b127ac822d70b937c1637c8d0eaf81b6979d4c1d75d0e1 \ No newline at end of file