From 0623359fbc67c421bf76b7433f92c7ef58050321 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 20 Sep 2006 16:15:32 +0000 Subject: * Print a better error message for wrong hashes (NIX-49). --- src/libexpr/primops.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/libexpr') diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 3f915fc232a9..c04d41bf4ddf 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -353,13 +353,16 @@ static Expr primDerivationStrict(EvalState & state, const ATermVector & args) HashType ht = parseHashType(outputHashAlgo); if (ht == htUnknown) throw EvalError(format("unknown hash algorithm `%1%'") % outputHashAlgo); - Hash h; - if (outputHash.size() == Hash(ht).hashSize * 2) + Hash h(ht); + if (outputHash.size() == h.hashSize * 2) /* hexadecimal representation */ h = parseHash(ht, outputHash); - else + else if (outputHash.size() == hashLength32(h)) /* base-32 representation */ h = parseHash32(ht, outputHash); + else + throw Error(format("hash `%1%' has wrong length for hash type `%2%'") + % outputHash % outputHashAlgo); string s = outputHash; outputHash = printHash(h); if (outputHashRecursive) outputHashAlgo = "r:" + outputHashAlgo; -- cgit 1.4.1