diff options
author | Will Dietz <w@wdtz.org> | 2018-03-22T14·56-0500 |
---|---|---|
committer | Will Dietz <w@wdtz.org> | 2018-03-22T20·22-0500 |
commit | 74da813912895015cf0f26da7aa520b278cb8071 (patch) | |
tree | 1c50c798e4aa2ba024c1bf61944f48c11293122d /src/libstore/download.cc | |
parent | 59b32403f2320e1979e5707b59d1dafcaf6ae910 (diff) |
download: improve error for hash mismatch ("store mismatch")
Fixes #1905
Diffstat (limited to 'src/libstore/download.cc')
-rw-r--r-- | src/libstore/download.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc index 2954b221d80f..4d7f5690192d 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); } |