gnu: cpio: Add fix for CVE-2016-2037.
* gnu/packages/patches/cpio-CVE-2016-2037.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/cpio.scm (cpio)[source]: Add patch.
This commit is contained in:
		
							parent
							
								
									6399941555
								
							
						
					
					
						commit
						4e58a402ff
					
				
					 3 changed files with 52 additions and 1 deletions
				
			
		|  | @ -437,6 +437,7 @@ dist_patch_DATA =						\ | |||
|   gnu/packages/patches/clucene-pkgconfig.patch			\ | ||||
|   gnu/packages/patches/cmake-fix-tests.patch			\ | ||||
|   gnu/packages/patches/cpio-gets-undeclared.patch		\ | ||||
|   gnu/packages/patches/cpio-CVE-2016-2037.patch			\ | ||||
|   gnu/packages/patches/cpufrequtils-fix-aclocal.patch		\ | ||||
|   gnu/packages/patches/crda-optional-gcrypt.patch		\ | ||||
|   gnu/packages/patches/crossmap-allow-system-pysam.patch	\ | ||||
|  |  | |||
|  | @ -35,7 +35,8 @@ | |||
|                                  version ".tar.bz2")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "0vi9q475h1rki53100zml75vxsykzyhrn70hidy41s5c2rc8r6bh")))) | ||||
|                "0vi9q475h1rki53100zml75vxsykzyhrn70hidy41s5c2rc8r6bh")) | ||||
|              (patches (list (search-patch "cpio-CVE-2016-2037.patch"))))) | ||||
|     (build-system gnu-build-system) | ||||
|     (home-page "https://www.gnu.org/software/cpio/") | ||||
|     (synopsis "Manage cpio and tar file archives") | ||||
|  |  | |||
							
								
								
									
										49
									
								
								gnu/packages/patches/cpio-CVE-2016-2037.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								gnu/packages/patches/cpio-CVE-2016-2037.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | |||
| Fix CVE-2016-2037 (out of bounds write in process_copy_in()). | ||||
| 
 | ||||
| Copied from upstream mailing list: | ||||
| https://lists.gnu.org/archive/html/bug-cpio/2016-01/msg00005.html | ||||
| 
 | ||||
| ---
 | ||||
| 
 | ||||
|  Other calls to cpio_safer_name_suffix seem to be safe. | ||||
|  . | ||||
|  * src/copyin.c (process_copy_in):  Make sure that file_hdr.c_name | ||||
|  has at least two bytes allocated. | ||||
|  * src/util.c (cpio_safer_name_suffix): Document that use of this | ||||
|  function requires to be careful. | ||||
| Author: Pavel Raiskup <praiskup@redhat.com> | ||||
| 
 | ||||
| ---
 | ||||
|  src/copyin.c | 2 ++ | ||||
|  src/util.c   | 5 ++++- | ||||
|  2 files changed, 6 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| Index: cpio-2.11+dfsg/src/copyin.c
 | ||||
| ===================================================================
 | ||||
| --- cpio-2.11+dfsg.orig/src/copyin.c
 | ||||
| +++ cpio-2.11+dfsg/src/copyin.c
 | ||||
| @@ -1433,6 +1433,8 @@ process_copy_in ()
 | ||||
|  	  break; | ||||
|  	} | ||||
|   | ||||
| +      if (file_hdr.c_namesize <= 1)
 | ||||
| +        file_hdr.c_name = xrealloc(file_hdr.c_name, 2);
 | ||||
|        cpio_safer_name_suffix (file_hdr.c_name, false, !no_abs_paths_flag, | ||||
|  			      false); | ||||
|         | ||||
| Index: cpio-2.11+dfsg/src/util.c
 | ||||
| ===================================================================
 | ||||
| --- cpio-2.11+dfsg.orig/src/util.c
 | ||||
| +++ cpio-2.11+dfsg/src/util.c
 | ||||
| @@ -1374,7 +1374,10 @@ set_file_times (int fd,
 | ||||
|  } | ||||
|   | ||||
|  /* Do we have to ignore absolute paths, and if so, does the filename | ||||
| -   have an absolute path?  */
 | ||||
| +   have an absolute path?
 | ||||
| +   Before calling this function make sure that the allocated NAME buffer has
 | ||||
| +   capacity at least 2 bytes to allow us to store the "." string inside.  */
 | ||||
| +
 | ||||
|  void | ||||
|  cpio_safer_name_suffix (char *name, bool link_target, bool absolute_names, | ||||
|  			bool strip_leading_dots) | ||||
		Reference in a new issue