diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2009-02-26T21·12+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2009-02-26T21·12+0000 |
commit | a7cee528c5967ffe20e50fb9dc329987843d42ec (patch) | |
tree | 27494ef8d6d2f730435adf5a596f998d72d893ac /scripts/download-using-manifests.pl.in | |
parent | 041717eda399de5ddbe2a147bafedf1a39993f8e (diff) |
* Handle base-16 hashes in manifests.
Diffstat (limited to 'scripts/download-using-manifests.pl.in')
-rw-r--r-- | scripts/download-using-manifests.pl.in | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/scripts/download-using-manifests.pl.in b/scripts/download-using-manifests.pl.in index b681ccf347bd..6246ed3f62d5 100644 --- a/scripts/download-using-manifests.pl.in +++ b/scripts/download-using-manifests.pl.in @@ -348,11 +348,22 @@ while (scalar @path > 0) { } +# Make sure that the hash declared in the manifest matches what we +# downloaded and unpacked. + if (defined $finalNarHash) { my ($hashAlgo, $hash) = parseHash $finalNarHash; - my $hash2 = `@bindir@/nix-hash --type $hashAlgo --base32 $targetPath` + + # The hash in the manifest can be either in base-16 or base-32. + # Handle both. + my $extraFlag = + ($hashAlgo eq "sha256" && length($hash) != 64) + ? "--base32" : ""; + + my $hash2 = `@bindir@/nix-hash --type $hashAlgo $extraFlag $targetPath` or die "cannot compute hash of path `$targetPath'"; chomp $hash2; + die "hash mismatch in downloaded path $targetPath; expected $hash, got $hash2" if $hash ne $hash2; } else { |