Fix CVE-2021-21708
This commit is contained in:
parent
5105008450
commit
70daf72f8d
54
backport-CVE-2021-21708-Fix-81708.patch
Normal file
54
backport-CVE-2021-21708-Fix-81708.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From 82f1bf1b6bc3a43aba62214870e6d0931e93a6d9 Mon Sep 17 00:00:00 2001
|
||||
From: "Christoph M. Becker" <cmbecker69@gmx.de>
|
||||
Date: Mon, 31 Jan 2022 15:43:24 +0100
|
||||
Subject: [PATCH] Fix #81708: UAF due to php_filter_float() failing for ints
|
||||
|
||||
We must only release the zval, if we actually assign a new zval.
|
||||
---
|
||||
ext/filter/logical_filters.c | 2 +-
|
||||
ext/filter/tests/bug81708.phpt | 20 ++++++++++++++++++++
|
||||
2 files changed, 21 insertions(+), 1 deletion(-)
|
||||
create mode 100644 ext/filter/tests/bug81708.phpt
|
||||
|
||||
diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c
|
||||
index 1bf7c00d13c6..95f7a99e34b1 100644
|
||||
--- a/ext/filter/logical_filters.c
|
||||
+++ b/ext/filter/logical_filters.c
|
||||
@@ -436,10 +436,10 @@ void php_filter_float(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
|
||||
|
||||
switch (is_numeric_string(num, p - num, &lval, &dval, 0)) {
|
||||
case IS_LONG:
|
||||
- zval_ptr_dtor(value);
|
||||
if ((min_range_set && (lval < min_range)) || (max_range_set && (lval > max_range))) {
|
||||
goto error;
|
||||
}
|
||||
+ zval_ptr_dtor(value);
|
||||
ZVAL_DOUBLE(value, (double)lval);
|
||||
break;
|
||||
case IS_DOUBLE:
|
||||
diff --git a/ext/filter/tests/bug81708.phpt b/ext/filter/tests/bug81708.phpt
|
||||
new file mode 100644
|
||||
index 000000000000..d0036af13682
|
||||
--- /dev/null
|
||||
+++ b/ext/filter/tests/bug81708.phpt
|
||||
@@ -0,0 +1,20 @@
|
||||
+--TEST--
|
||||
+Bug #81708 (UAF due to php_filter_float() failing for ints)
|
||||
+--SKIPIF--
|
||||
+<?php
|
||||
+if (!extension_loaded("filter")) die("skip filter extension not available");
|
||||
+?>
|
||||
+--INI--
|
||||
+opcache.enable_cli=0
|
||||
+--FILE--
|
||||
+<?php
|
||||
+$input = "+" . str_repeat("1", 2); // avoid string interning
|
||||
+filter_var(
|
||||
+ $input,
|
||||
+ FILTER_VALIDATE_FLOAT,
|
||||
+ ["options" => ['min_range' => -1, 'max_range' => 1]]
|
||||
+);
|
||||
+var_dump($input);
|
||||
+?>
|
||||
+--EXPECT--
|
||||
+string(3) "+11"
|
||||
6
php.spec
6
php.spec
@ -26,7 +26,7 @@
|
||||
|
||||
Name: php
|
||||
Version: %{upver}
|
||||
Release: 8
|
||||
Release: 9
|
||||
Summary: PHP scripting language for creating dynamic web sites
|
||||
License: PHP and Zend-2.0 and BSD and MIT and ASL 1.0 and NCSA
|
||||
URL: http://www.php.net/
|
||||
@ -69,6 +69,7 @@ Patch18: backport-Fix-ASSIGN_DIM-to-NEXT-with-rc-1-reference-value.patch
|
||||
Patch19: backport-Undef-slot-before-destroying-in-unset_property.patch
|
||||
Patch20: backport-Handle-ref-return-from-Iterator-key.patch
|
||||
Patch21: backport-Fix-return-by-ref-from-array_reduce-callback.patch
|
||||
Patch22: backport-CVE-2021-21708-Fix-81708.patch
|
||||
|
||||
BuildRequires: bzip2-devel, curl-devel >= 7.9, httpd-devel >= 2.0.46-1, pam-devel, httpd-filesystem, nginx-filesystem
|
||||
BuildRequires: libstdc++-devel, openssl-devel, sqlite-devel >= 3.6.0, zlib-devel, smtpdaemon, libedit-devel
|
||||
@ -1101,6 +1102,9 @@ systemctl try-restart php-fpm.service >/dev/null 2>&1 || :
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Mar 9 2022 panxiaohe <panxh.life@foxmail.com> - 8.0.0-9
|
||||
- Fix CVE-2021-21708
|
||||
|
||||
* Wed Feb 23 2022 panxiaohe <panxh.life@foxmail.com> - 8.0.0-8
|
||||
- use lmdb instead of Berkeley DB for package dba
|
||||
- update %%configure for riscv
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user