From 0340069cc4709a18ba117090763d9f263de999a9 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 12 Mar 2016 20:29:04 +0100 Subject: show more details for "Hash Sum mismatch" errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Users tend to report these errors with just this error message… not very actionable and hard to figure out if this is a temporary or 'permanent' mirror-sync issue or even the occasional apt bug. Showing the involved hashsums and modification times should help in triaging these kind of bugs – and eventually we will have less of them via by-hash. The subheaders aren't marked for translation for now as they are technical glibberish and probably easier to deal with if not translated. After all, our iconic "Hash Sum mismatch" is translated at least. These additions were proposed in #817240 by Peter Palfrader. --- test/integration/framework | 20 ++-- test/integration/test-apt-helper | 15 +++ test/integration/test-apt-update-not-modified | 47 ++++++-- test/integration/test-apt-update-rollback | 17 +++ .../test-ubuntu-bug-1098738-apt-get-source-md5sum | 124 +++++++++++++++++++++ 5 files changed, 208 insertions(+), 15 deletions(-) (limited to 'test') diff --git a/test/integration/framework b/test/integration/framework index 2a78e6194..a68209326 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -217,6 +217,12 @@ gdb() { fi runapt command gdb --quiet -ex run "$CMD" --args "$CMD" "$@" } +lastmodification() { + date -u -d "@$(stat -c '%Y' "${TMPWORKINGDIRECTORY}/$1")" '+%a, %d %b %Y %H:%M:%S GMT' +} +releasefiledate() { + grep "^${2:-Date}:" "$1" | cut -d' ' -f 2- | sed -e 's#UTC#GMT#' +} exitwithstatus() { # error if we about to overflow, but ... @@ -595,12 +601,12 @@ setupsimplenativepackage() { mkdir -p ${BUILDDIR}/debian/source cd ${BUILDDIR} echo "* most suckless software product ever" > FEATURES - test -e debian/copyright || echo "Copyleft by Joe Sixpack $(date +%Y)" > debian/copyright + test -e debian/copyright || echo "Copyleft by Joe Sixpack $(date -u +%Y)" > debian/copyright test -e debian/changelog || echo "$NAME ($VERSION) $RELEASE; urgency=low * Initial release - -- Joe Sixpack $(date -R)" > debian/changelog + -- Joe Sixpack $(date -u -R)" > debian/changelog test -e debian/control || echo "Source: $NAME Section: $SECTION Priority: optional @@ -658,12 +664,12 @@ buildsimplenativepackage() { echo "#!/bin/sh echo '$NAME says \"Hello!\"'" > "${BUILDDIR}/${NAME}" - echo "Copyleft by Joe Sixpack $(date +%Y)" > "${BUILDDIR}/debian/copyright" + echo "Copyleft by Joe Sixpack $(date -u +%Y)" > "${BUILDDIR}/debian/copyright" echo "$NAME ($VERSION) $RELEASE; urgency=low * Initial release - -- Joe Sixpack $(date -R)" > "${BUILDDIR}/debian/changelog" + -- Joe Sixpack $(date -u -R)" > "${BUILDDIR}/debian/changelog" { echo "Source: $NAME Priority: $PRIORITY @@ -1014,13 +1020,13 @@ NotAutomatic: yes' "$dir/Release" fi if [ -n "$DATE" -a "$DATE" != "now" ]; then for release in $(find ./aptarchive -name 'Release'); do - sed -i "s/^Date: .*$/Date: $(date -d "$DATE" '+%a, %d %b %Y %H:%M:%S %Z')/" "$release" + sed -i "s/^Date: .*$/Date: $(date -u -d "$DATE" '+%a, %d %b %Y %H:%M:%S %Z')/" "$release" touch -d "$DATE" "$release" done fi if [ -n "$VALIDUNTIL" ]; then sed -i "/^Date: / a\ -Valid-Until: $(date -d "$VALIDUNTIL" '+%a, %d %b %Y %H:%M:%S %Z')" $(find ./aptarchive -name 'Release') +Valid-Until: $(date -u -d "$VALIDUNTIL" '+%a, %d %b %Y %H:%M:%S %Z')" $(find ./aptarchive -name 'Release') fi msgdone "info" } @@ -1119,7 +1125,7 @@ signreleasefiles() { } redatereleasefiles() { - local DATE="$(date -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')" + local DATE="$(date -u -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')" for release in $(find aptarchive/ -name 'Release'); do sed -i "s/^Date: .*$/Date: ${DATE}/" "$release" touch -d "$DATE" "$release" diff --git a/test/integration/test-apt-helper b/test/integration/test-apt-helper index bc7f6e680..8a25859b8 100755 --- a/test/integration/test-apt-helper +++ b/test/integration/test-apt-helper @@ -34,12 +34,27 @@ test_apt_helper_download() { msgtest 'apt-file download-file' 'wrong md5sum' testfailure --nomsg apthelper -qq download-file "${1}/foo" './downloaded/foo5' 'MD5Sum:aabbcc' testfileequal rootdir/tmp/testfailure.output "E: Failed to fetch ${1}/foo Hash Sum mismatch + Hashes of expected file: + - MD5Sum:aabbcc + Hashes of received file: + - SHA512:0cf9180a764aba863a67b6d72f0918bc131c6772642cb2dce5a34f0a702f9470ddc2bf125c12198b1995c233c34b4afd346c54a2334c350a948a51b6e8b4e6b6 + - SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + - SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 + - MD5Sum:d3b07384d113edec49eaa6238ad5ff00 + - Checksum-FileSize:4 + Last modification reported: $(lastmodification 'aptarchive/foo') E: Download Failed" testfileequal ./downloaded/foo5.FAILED 'foo' msgtest 'apt-file download-file' 'wrong sha256' testfailure --nomsg apthelper -qq download-file "${1}/foo" './downloaded/foo6' 'SHA256:aabbcc' testfileequal rootdir/tmp/testfailure.output "E: Failed to fetch ${1}/foo Hash Sum mismatch + Hashes of expected file: + - SHA256:aabbcc + Hashes of received file: + - SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + - Checksum-FileSize:4 + Last modification reported: $(lastmodification 'aptarchive/foo') E: Download Failed" testfileequal './downloaded/foo6.FAILED' 'foo' diff --git a/test/integration/test-apt-update-not-modified b/test/integration/test-apt-update-not-modified index b1f801bc5..c81a05b2c 100755 --- a/test/integration/test-apt-update-not-modified +++ b/test/integration/test-apt-update-not-modified @@ -6,6 +6,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture 'amd64' 'i386' +confighashes 'SHA256' insertpackage 'unstable' 'apt' 'amd64,i386' '1.0' @@ -34,10 +35,9 @@ Reading package lists..." aptget update # readd arch so its downloaded again… configarchitecture 'amd64' 'i386' # … but oh noes, hashsum mismatch! - SIZE=$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') - find aptarchive/dists/unstable/main/binary-amd64/ -type f -delete - cat >> aptarchive/dists/unstable/main/binary-amd64/Packages < aptarchive/dists/unstable/main/binary-amd64/Packages <> aptarchive/dists/unstable/main/binary-amd64/Packages < aptarchive/dists/unstable/main/binary-amd64/Packages < "$APTARCHIVE/dists/unstable/main/source/Sources" compressfile "$APTARCHIVE/dists/unstable/main/source/Sources" "$@" } @@ -61,6 +62,14 @@ test_inrelease_to_broken_hash_reverts_all() { # test the error condition testfailureequal "E: Failed to fetch file:${APTARCHIVE}/dists/unstable/main/source/Sources.gz Hash Sum mismatch + Hashes of expected file: + - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz.orig') + - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz.orig' | cut -d' ' -f 1) + Hashes of received file: + - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz' | cut -d' ' -f 1) + - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz') + Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/source/Sources.gz') + Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease') E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq # ensure that the Packages file is also rolled back testfileequal lists.before "$(listcurrentlistsdirectory)" @@ -127,6 +136,14 @@ E: There were unauthenticated packages and -y was used without --allow-unauthent break_repository_sources_index '+1hour' testfailureequal "E: Failed to fetch file:$APTARCHIVE/dists/unstable/main/source/Sources.gz Hash Sum mismatch + Hashes of expected file: + - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz.orig') + - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz.orig' | cut -d' ' -f 1) + Hashes of received file: + - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz' | cut -d' ' -f 1) + - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz') + Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/source/Sources.gz') + Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease') E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq testfileequal lists.before "$(listcurrentlistsdirectory)" diff --git a/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum index 2a271607e..8994fa24e 100755 --- a/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum +++ b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum @@ -220,8 +220,74 @@ Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [4 B] Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) Hash Sum mismatch + Hashes of expected file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:4 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Writing more data than expected (3 > 2) E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch + Hashes of expected file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:4 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") +E: Failed to fetch some archives." + elif [ "$1" = 'pkg-md5-bad' ]; then + FAILURE="Reading package lists... +Need to get 6 B of source archives. +Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B] +Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) + Hash Sum mismatch + Hashes of expected file: + - MD5Sum:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - Checksum-FileSize:3 + Hashes of received file: + - SHA512:e52b7bb395ea3f46974f1f65b7c5975839aad32d4e2ec0f458f735d5aa24d2bf36d7816ed1e01dc3c493e11879e9a8f66dfca42821608cfe993996929a6be18a + - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") +Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B] +Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) + Hash Sum mismatch + Hashes of expected file: + - MD5Sum:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + Hashes of received file: + - SHA512:5aa4cad81553320574eb72ee92bd45a1f0575528e257749dff298b2a33df9e7fc7f5c1c87fc1c8fde230f1234cca3a99bf8625a0ff7bb3238eb7e5473f9b43c0 + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz") +E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Hash Sum mismatch + Hashes of expected file: + - MD5Sum:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - Checksum-FileSize:3 + Hashes of received file: + - SHA512:e52b7bb395ea3f46974f1f65b7c5975839aad32d4e2ec0f458f735d5aa24d2bf36d7816ed1e01dc3c493e11879e9a8f66dfca42821608cfe993996929a6be18a + - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") +E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch + Hashes of expected file: + - MD5Sum:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + Hashes of received file: + - SHA512:5aa4cad81553320574eb72ee92bd45a1f0575528e257749dff298b2a33df9e7fc7f5c1c87fc1c8fde230f1234cca3a99bf8625a0ff7bb3238eb7e5473f9b43c0 + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz") E: Failed to fetch some archives." else FAILURE="Reading package lists... @@ -229,11 +295,55 @@ Need to get 6 B of source archives. Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B] Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) Hash Sum mismatch + Hashes of expected file: + - SHA256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - Checksum-FileSize:3 + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + Hashes of received file: + - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B] Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) Hash Sum mismatch + Hashes of expected file: + - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz") E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Hash Sum mismatch + Hashes of expected file: + - SHA256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - Checksum-FileSize:3 + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + Hashes of received file: + - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch + Hashes of expected file: + - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz") E: Failed to fetch some archives." fi testfailureequal "$FAILURE" aptget source -d "$@" @@ -311,7 +421,21 @@ Need to get 3 B of source archives. Get:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha2-bad 1.0 (tar) [3 B] Err:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha2-bad 1.0 (tar) Hash Sum mismatch + Hashes of expected file: + - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:3 + Last modification reported: $(lastmodification 'aptarchive/pkg-mixed-sha2-bad_1.0.tar.gz') E: Failed to fetch http://localhost:${APTHTTPPORT}/pkg-mixed-sha2-bad_1.0.tar.gz Hash Sum mismatch + Hashes of expected file: + - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:3 + Last modification reported: $(lastmodification 'aptarchive/pkg-mixed-sha2-bad_1.0.tar.gz') E: Failed to fetch some archives." aptget source -d pkg-mixed-sha2-bad # it gets even more pathologic: multiple entries for one file, some even disagreeing! -- cgit v1.2.3