cache: don't check for match with no key
We call open_slot() from cache_ls() without a key since we simply want to read the path out of the header. Should the file happen to contain an empty key then we end up calling memcmp() with NULL and a non-zero length. Fix this by assigning slot->match only if a key is set, which is always will be in the code paths where we use slot->match. Coverity-id: 13807 Signed-off-by: John Keeping <john@keeping.me.uk>
This commit is contained in:
		 John Keeping
					John Keeping
				
			
				
					committed by
					
						 Jason A. Donenfeld
						Jason A. Donenfeld
					
				
			
			
				
	
			
			
			 Jason A. Donenfeld
						Jason A. Donenfeld
					
				
			
						parent
						
							3fbfced740
						
					
				
				
					commit
					33bc949a1e
				
			
							
								
								
									
										5
									
								
								cache.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								cache.c
									
									
									
									
									
								
							| @@ -61,8 +61,9 @@ static int open_slot(struct cache_slot *slot) | ||||
| 	if (bufz) | ||||
| 		bufkeylen = bufz - slot->buf; | ||||
|  | ||||
| 	slot->match = bufkeylen == slot->keylen && | ||||
| 	    !memcmp(slot->key, slot->buf, bufkeylen + 1); | ||||
| 	if (slot->key) | ||||
| 		slot->match = bufkeylen == slot->keylen && | ||||
| 		    !memcmp(slot->key, slot->buf, bufkeylen + 1); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user