Merge branch 'rs/sha1-file-plug-fallback-base-leak' into maint
A leak in a codepath to read from a packed object in (rare) cases has been plugged. * rs/sha1-file-plug-fallback-base-leak: sha1_file: release fallback base's memory in unpack_entry()
This commit is contained in:
		| @ -2532,6 +2532,7 @@ void *unpack_entry(struct packed_git *p, off_t obj_offset, | |||||||
| 	while (delta_stack_nr) { | 	while (delta_stack_nr) { | ||||||
| 		void *delta_data; | 		void *delta_data; | ||||||
| 		void *base = data; | 		void *base = data; | ||||||
|  | 		void *external_base = NULL; | ||||||
| 		unsigned long delta_size, base_size = size; | 		unsigned long delta_size, base_size = size; | ||||||
| 		int i; | 		int i; | ||||||
|  |  | ||||||
| @ -2558,6 +2559,7 @@ void *unpack_entry(struct packed_git *p, off_t obj_offset, | |||||||
| 				      p->pack_name); | 				      p->pack_name); | ||||||
| 				mark_bad_packed_object(p, base_sha1); | 				mark_bad_packed_object(p, base_sha1); | ||||||
| 				base = read_object(base_sha1, &type, &base_size); | 				base = read_object(base_sha1, &type, &base_size); | ||||||
|  | 				external_base = base; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @ -2576,6 +2578,7 @@ void *unpack_entry(struct packed_git *p, off_t obj_offset, | |||||||
| 			      "at offset %"PRIuMAX" from %s", | 			      "at offset %"PRIuMAX" from %s", | ||||||
| 			      (uintmax_t)curpos, p->pack_name); | 			      (uintmax_t)curpos, p->pack_name); | ||||||
| 			data = NULL; | 			data = NULL; | ||||||
|  | 			free(external_base); | ||||||
| 			continue; | 			continue; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @ -2595,6 +2598,7 @@ void *unpack_entry(struct packed_git *p, off_t obj_offset, | |||||||
| 			error("failed to apply delta"); | 			error("failed to apply delta"); | ||||||
|  |  | ||||||
| 		free(delta_data); | 		free(delta_data); | ||||||
|  | 		free(external_base); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	*final_type = type; | 	*final_type = type; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Junio C Hamano
					Junio C Hamano