aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/download.cc
diff options
context:
space:
mode:
authorWill Dietz <w@wdtz.org>2018-03-22 09:56:54 -0500
committerWill Dietz <w@wdtz.org>2018-03-22 15:22:06 -0500
commit74da813912895015cf0f26da7aa520b278cb8071 (patch)
tree1c50c798e4aa2ba024c1bf61944f48c11293122d /src/libstore/download.cc
parent59b32403f2320e1979e5707b59d1dafcaf6ae910 (diff)
download: improve error for hash mismatch ("store mismatch")
Fixes #1905
Diffstat (limited to 'src/libstore/download.cc')
-rw-r--r--src/libstore/download.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc
index 2954b221d..4d7f56901 100644
--- a/src/libstore/download.cc
+++ b/src/libstore/download.cc
@@ -726,8 +726,13 @@ Path Downloader::downloadCached(ref<Store> store, const string & url_, bool unpa
storePath = unpackedStorePath;
}
- if (expectedStorePath != "" && storePath != expectedStorePath)
- throw nix::Error("store path mismatch in file downloaded from '%s'", url);
+ if (expectedStorePath != "" && storePath != expectedStorePath) {
+ Hash gotHash = unpack
+ ? hashPath(expectedHash.type, store->toRealPath(storePath)).first
+ : hashFile(expectedHash.type, store->toRealPath(storePath));
+ throw nix::Error("hash mismatch in file downloaded from '%s': expected hash '%s', got '%s'",
+ url, expectedHash.to_string(), gotHash.to_string());
+ }
return store->toRealPath(storePath);
}