summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-07-21 18:35:12 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-07-21 18:35:12 +0200
commitea8e8df6c783fd9c0185d31ffca4e518a43fe247 (patch)
treef6216beade6d2aa4379d9e2f8dc327ea9f0846dd /src
parente682a8e138c44e557c57a8dcf33555ad7790dd8c (diff)
NarInfo::NarInfo(): Ensure that we get a NAR size/hash
Diffstat (limited to 'src')
-rw-r--r--src/libstore/nar-info.cc4
-rw-r--r--src/libutil/hash.cc1
2 files changed, 3 insertions, 2 deletions
diff --git a/src/libstore/nar-info.cc b/src/libstore/nar-info.cc
index 1aacca84b..b0a8d77c2 100644
--- a/src/libstore/nar-info.cc
+++ b/src/libstore/nar-info.cc
@@ -6,7 +6,7 @@ namespace nix {
NarInfo::NarInfo(const Store & store, const std::string & s, const std::string & whence)
{
auto corrupt = [&]() {
- throw Error("NAR info file ‘%1%’ is corrupt");
+ throw Error(format("NAR info file ‘%1%’ is corrupt") % whence);
};
auto parseHashField = [&](const string & s) {
@@ -73,7 +73,7 @@ NarInfo::NarInfo(const Store & store, const std::string & s, const std::string &
if (compression == "") compression = "bzip2";
- if (path.empty() || url.empty()) corrupt();
+ if (path.empty() || url.empty() || narSize == 0 || !narHash) corrupt();
}
std::string NarInfo::to_string() const
diff --git a/src/libutil/hash.cc b/src/libutil/hash.cc
index fa4258777..5352483ff 100644
--- a/src/libutil/hash.cc
+++ b/src/libutil/hash.cc
@@ -121,6 +121,7 @@ const string base32Chars = "0123456789abcdfghijklmnpqrsvwxyz";
string printHash32(const Hash & hash)
{
+ assert(hash.type != htUnknown);
size_t len = hash.base32Len();
assert(len);