fix(3p/nix/hash): initialize HashSink.ctx
Fixup for CL 1492 (addcba11b0)
Additionally, add a test to verify functionality of HashSink.
Change-Id: I2a74b925a1b93ed4d3add29021d759c93e813424
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1507
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
			
			
This commit is contained in:
		
							parent
							
								
									f41324db8c
								
							
						
					
					
						commit
						2a292c71f4
					
				
					 2 changed files with 22 additions and 1 deletions
				
			
		
							
								
								
									
										5
									
								
								third_party/nix/src/libutil/hash.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								third_party/nix/src/libutil/hash.cc
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -361,7 +361,10 @@ Hash hashFile(HashType ht, const Path& path) {
 | 
				
			||||||
  return hash;
 | 
					  return hash;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HashSink::HashSink(HashType ht) : ht(ht), ctx(), bytes(0) { start(ht, *ctx); }
 | 
					HashSink::HashSink(HashType ht)
 | 
				
			||||||
 | 
					    : ht(ht), ctx(std::make_unique<hash::Ctx>()), bytes(0) {
 | 
				
			||||||
 | 
					  start(ht, *ctx);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HashSink::~HashSink() { bufPos = 0; }
 | 
					HashSink::~HashSink() { bufPos = 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								third_party/nix/src/tests/hash_test.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								third_party/nix/src/tests/hash_test.cc
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -80,4 +80,22 @@ TEST(HashTest, SHA256DecodeFail) {
 | 
				
			||||||
      HasSubstr("invalid base-16"));
 | 
					      HasSubstr("invalid base-16"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEST(HashSink, SHA256) {
 | 
				
			||||||
 | 
					  HashSink sink(htSHA256);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sink.write(reinterpret_cast<const unsigned char*>("fo"), 2);
 | 
				
			||||||
 | 
					  HashResult partial = sink.currentHash();
 | 
				
			||||||
 | 
					  EXPECT_EQ(partial.first.to_string(Base16),
 | 
				
			||||||
 | 
					            "sha256:"
 | 
				
			||||||
 | 
					            "9c3aee7110b787f0fb5f81633a36392bd277ea945d44c874a9a23601aefe20cf");
 | 
				
			||||||
 | 
					  EXPECT_EQ(partial.second, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sink.write(reinterpret_cast<const unsigned char*>("o"), 1);
 | 
				
			||||||
 | 
					  HashResult end = sink.finish();
 | 
				
			||||||
 | 
					  EXPECT_EQ(end.first.to_string(Base16),
 | 
				
			||||||
 | 
					            "sha256:"
 | 
				
			||||||
 | 
					            "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae");
 | 
				
			||||||
 | 
					  EXPECT_EQ(end.second, 3);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}  // namespace nix
 | 
					}  // namespace nix
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue