* gnu/packages/patches/libgit2-use-after-free.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/version-control.scm (libgit2)[inputs]: Add it. [arguments] <#:phases>: Add 'apply-patch' phase.
		
			
				
	
	
		
			24 lines
		
	
	
	
		
			875 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			875 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
| This patch is taken from <https://github.com/libgit2/libgit2/pull/4122>;
 | |
| we need it to fix the use-after-free error in 'git_commit_extract_signature'
 | |
| reported at <https://github.com/libgit2/libgit2/issues/4118>.
 | |
| 
 | |
| From ade0d9c658fdfc68d8046935f6908f033fe7a529 Mon Sep 17 00:00:00 2001
 | |
| From: Patrick Steinhardt <ps@pks.im>
 | |
| Date: Mon, 13 Feb 2017 13:46:17 +0100
 | |
| Subject: [PATCH 3/3] commit: avoid possible use-after-free
 | |
| 
 | |
| diff --git a/src/commit.c b/src/commit.c
 | |
| index 89a4db1..05b70a9 100644
 | |
| --- a/src/commit.c
 | |
| +++ b/src/commit.c
 | |
| @@ -766,8 +766,9 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
 | |
|  		if (git_buf_oom(signature))
 | |
|  			goto oom;
 | |
|  
 | |
| +		error = git_buf_puts(signed_data, eol+1);
 | |
|  		git_odb_object_free(obj);
 | |
| -		return git_buf_puts(signed_data, eol+1);
 | |
| +		return error;
 | |
|  	}
 | |
|  
 | |
|  	giterr_set(GITERR_OBJECT, "this commit is not signed");
 |