BinaryCacheStore: When adding a path, ensure the references are valid
This prevents copying a partial closure to a binary cache.
This commit is contained in:
		
							parent
							
								
									21ef1670b3
								
							
						
					
					
						commit
						0207272b28
					
				
					 1 changed files with 11 additions and 0 deletions
				
			
		|  | @ -50,6 +50,17 @@ Path BinaryCacheStore::narInfoFileFor(const Path & storePath) | |||
| void BinaryCacheStore::addToCache(const ValidPathInfo & info, | ||||
|     const string & nar) | ||||
| { | ||||
|     /* Verify that all references are valid. This may do some .narinfo
 | ||||
|        reads, but typically they'll already be cached. */ | ||||
|     for (auto & ref : info.references) | ||||
|         try { | ||||
|             if (ref != info.path) | ||||
|                 queryPathInfo(ref); | ||||
|         } catch (InvalidPath &) { | ||||
|             throw Error(format("cannot add ‘%s’ to the binary cache because the reference ‘%s’ is not valid") | ||||
|                 % info.path % ref); | ||||
|         } | ||||
| 
 | ||||
|     auto narInfoFile = narInfoFileFor(info.path); | ||||
|     if (fileExists(narInfoFile)) return; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue