diff options
| author | Remi Collet <remi@remirepo.net> | 2022-09-27 18:52:55 +0200 | 
|---|---|---|
| committer | Remi Collet <remi@php.net> | 2022-09-27 18:52:55 +0200 | 
| commit | 871c5d5bad82361888c4b8e7270f984075319d5b (patch) | |
| tree | 3c74d89b49433969c659081b3f1d64d7b386e077 | |
| parent | fae7cf559945a51ab02fd3855eb7097c2b3ca5b6 (diff) | |
rebuild with refreshed patch
| -rw-r--r-- | php-bug81726.patch | 59 | ||||
| -rw-r--r-- | php.spec | 5 | 
2 files changed, 61 insertions, 3 deletions
| diff --git a/php-bug81726.patch b/php-bug81726.patch index 59b28c6..1f136a8 100644 --- a/php-bug81726.patch +++ b/php-bug81726.patch @@ -85,3 +85,62 @@ index 44e40d98d1..9360658cd7 100644   				continue;   			} +From 535c3f592d020a3a43f4ce3577e505d64297b6e8 Mon Sep 17 00:00:00 2001 +From: "Christoph M. Becker" <cmbecker69@gmx.de> +Date: Tue, 27 Sep 2022 17:43:40 +0200 +Subject: [PATCH] Fix regression introduced by fixing bug 81726 + +When a tar phar is created, `phar_open_from_fp()` is also called, but +since the file has just been created, none of the format checks can +succeed, so we continue to loop, but must not check again for the +format.  Therefore, we bring back the old `test` variable. + +Closes GH-9620. + +(cherry picked from commit 432bf196d59bcb661fcf9cb7029cea9b43f490af) +--- + ext/phar/phar.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/ext/phar/phar.c b/ext/phar/phar.c +index 9360658cd7..1437525245 100644 +--- a/ext/phar/phar.c ++++ b/ext/phar/phar.c +@@ -1593,7 +1593,7 @@ static int phar_open_from_fp(php_stream* fp, char *fname, size_t fname_len, char + 	const char zip_magic[] = "PK\x03\x04"; + 	const char gz_magic[] = "\x1f\x8b\x08"; + 	const char bz_magic[] = "BZh"; +-	char *pos; ++	char *pos, test = '\0'; + 	int recursion_count = 3; // arbitrary limit to avoid too deep or even infinite recursion + 	const int window_size = 1024; + 	char buffer[1024 + sizeof(token)]; /* a 1024 byte window + the size of the halt_compiler token (moving window) */ +@@ -1622,7 +1622,8 @@ static int phar_open_from_fp(php_stream* fp, char *fname, size_t fname_len, char + 			MAPPHAR_ALLOC_FAIL("internal corruption of phar \"%s\" (truncated entry)") + 		} +  +-		if (recursion_count) { ++		if (!test && recursion_count) { ++			test = '\1'; + 			pos = buffer+tokenlen; + 			if (!memcmp(pos, gz_magic, 3)) { + 				char err = 0; +@@ -1682,6 +1683,7 @@ static int phar_open_from_fp(php_stream* fp, char *fname, size_t fname_len, char + 				compression = PHAR_FILE_COMPRESSED_GZ; +  + 				/* now, start over */ ++				test = '\0'; + 				if (!--recursion_count) { + 					MAPPHAR_ALLOC_FAIL("unable to decompress gzipped phar archive \"%s\""); + 					break; +@@ -1723,6 +1725,7 @@ static int phar_open_from_fp(php_stream* fp, char *fname, size_t fname_len, char + 				compression = PHAR_FILE_COMPRESSED_BZ2; +  + 				/* now, start over */ ++				test = '\0'; + 				if (!--recursion_count) { + 					MAPPHAR_ALLOC_FAIL("unable to decompress bzipped phar archive \"%s\""); + 					break; +--  +2.37.3 + @@ -126,7 +126,7 @@  Summary: PHP scripting language for creating dynamic web sites  Name:    %{?scl_prefix}php  Version: %{upver}%{?rcver:~%{rcver}} -Release: 4%{?dist} +Release: 5%{?dist}  # All files licensed under PHP version 3.01, except  # Zend is licensed under Zend  # TSRM is licensed under BSD @@ -1934,12 +1934,11 @@ EOF  %changelog -* Tue Sep 27 2022 Remi Collet <remi@remirepo.net> - 7.3.33-4 +* Tue Sep 27 2022 Remi Collet <remi@remirepo.net> - 7.3.33-5  - phar: fix #81726 DOS when using quine gzip file. CVE-2022-31628  - core: fix #81727 Don't mangle HTTP variable names that clash with ones    that have a specific semantic meaning. CVE-2022-31629  - use oracle client library version 21.7 -- use ICU 71.1  * Tue Jun  7 2022 Remi Collet <remi@remirepo.net> - 7.3.33-3  - use oracle client library version 21.6 | 
