diff options
Diffstat (limited to 'community/php8/CVE-2022-31626.patch')
-rw-r--r-- | community/php8/CVE-2022-31626.patch | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/community/php8/CVE-2022-31626.patch b/community/php8/CVE-2022-31626.patch deleted file mode 100644 index 7c8770bd2be..00000000000 --- a/community/php8/CVE-2022-31626.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 55f6895f4b4c677272fd4ee1113acdbd99c4b5ab Mon Sep 17 00:00:00 2001 -From: "Christoph M. Becker" <cmbecker69@gmx.de> -Date: Tue, 17 May 2022 12:59:23 +0200 -Subject: [PATCH] Fix #81720: Uninitialized array in pg_query_params() leading - to RCE - -We must not free parameters which we haven't initialized yet. - -We also fix the not directly related issue, that we checked for the -wrong value being `NULL`, potentially causing a segfault. ---- - ext/pgsql/pgsql.c | 6 +++--- - ext/pgsql/tests/bug81720.phpt | 27 +++++++++++++++++++++++++++ - 2 files changed, 30 insertions(+), 3 deletions(-) - create mode 100644 ext/pgsql/tests/bug81720.phpt - -diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c -index f52ff884d83c..7dcd56cf1441 100644 ---- a/ext/pgsql/pgsql.c -+++ b/ext/pgsql/pgsql.c - params[i] = estrndup(Z_STRVAL(tmp_val), Z_STRLEN(tmp_val)); -@@ -3920,8 +3920,8 @@ PHP_FUNCTION(pg_send_execute) - params[i] = NULL; - } else { - zend_string *tmp_str = zval_try_get_string(tmp); -- if (UNEXPECTED(!tmp)) { -- _php_pgsql_free_params(params, num_params); -+ if (UNEXPECTED(!tmp_str)) { -+ _php_pgsql_free_params(params, i); - return; - } - params[i] = estrndup(ZSTR_VAL(tmp_str), ZSTR_LEN(tmp_str)); -diff --git a/ext/pgsql/tests/bug81720.phpt b/ext/pgsql/tests/bug81720.phpt -new file mode 100644 -index 000000000000..d79f1fcdd612 ---- /dev/null -+++ b/ext/pgsql/tests/bug81720.phpt -@@ -0,0 +1,27 @@ -+--TEST-- -+Bug #81720 (Uninitialized array in pg_query_params() leading to RCE) -+--SKIPIF-- -+<?php include("skipif.inc"); ?> -+--FILE-- -+<?php -+include('config.inc'); -+ -+$conn = pg_connect($conn_str); -+ -+try { -+ pg_query_params($conn, 'SELECT $1, $2', [1, new stdClass()]); -+} catch (Throwable $ex) { -+ echo $ex->getMessage(), PHP_EOL; -+} -+ -+try { -+ pg_send_prepare($conn, "my_query", 'SELECT $1, $2'); -+ pg_get_result($conn); -+ pg_send_execute($conn, "my_query", [1, new stdClass()]); -+} catch (Throwable $ex) { -+ echo $ex->getMessage(), PHP_EOL; -+} -+?> -+--EXPECT-- -+Object of class stdClass could not be converted to string -+Object of class stdClass could not be converted to string |