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/clucene-pkgconfig.patch			\ | ||||||
|   gnu/packages/patches/cmake-fix-tests.patch			\ |   gnu/packages/patches/cmake-fix-tests.patch			\ | ||||||
|   gnu/packages/patches/cpio-gets-undeclared.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/cpufrequtils-fix-aclocal.patch		\ | ||||||
|   gnu/packages/patches/crda-optional-gcrypt.patch		\ |   gnu/packages/patches/crda-optional-gcrypt.patch		\ | ||||||
|   gnu/packages/patches/crossmap-allow-system-pysam.patch	\ |   gnu/packages/patches/crossmap-allow-system-pysam.patch	\ | ||||||
|  |  | ||||||
|  | @ -35,7 +35,8 @@ | ||||||
|                                  version ".tar.bz2")) |                                  version ".tar.bz2")) | ||||||
|              (sha256 |              (sha256 | ||||||
|               (base32 |               (base32 | ||||||
|                "0vi9q475h1rki53100zml75vxsykzyhrn70hidy41s5c2rc8r6bh")))) |                "0vi9q475h1rki53100zml75vxsykzyhrn70hidy41s5c2rc8r6bh")) | ||||||
|  |              (patches (list (search-patch "cpio-CVE-2016-2037.patch"))))) | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     (home-page "https://www.gnu.org/software/cpio/") |     (home-page "https://www.gnu.org/software/cpio/") | ||||||
|     (synopsis "Manage cpio and tar file archives") |     (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