Skip to content

[pull] master from php:master - #1134

Merged
pull[bot] merged 8 commits into
turkdevops:masterfrom
php:master
Jul 30, 2026
Merged

[pull] master from php:master#1134
pull[bot] merged 8 commits into
turkdevops:masterfrom
php:master

Conversation

@pull

@pull pull Bot commented Jul 30, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

NattyNarwhal and others added 8 commits July 30, 2026 01:26
Drivers have no standard parsing, and may react weirdly to spaces in a
connection string. When we append the UID/PWD parameters for the user
and pass parameters of `odbc_(p)connect` or the PDO constructor, add
spaces to the list of characters that require quoting.

This fixes issues related to significant whitespace possibly not being
parsed in a username or password, or having whitespace mangle parsing of
a connection string. Note that there is no security impact because in
order to do something interesting, you must be able to control the ';='
characters, and we already quote in those cases.
* PHP-8.4:
  odbc: Quote spaces in UID/PWD appended to connection string (#22791)
* PHP-8.5:
  odbc: Quote spaces in UID/PWD appended to connection string (#22791)
… a property hook (#22897)

In the function JIT, ZEND_FETCH_OBJ_FUNC_ARG's by-value fetch dispatches into
the FETCH_OBJ_R handler, which may take the SIMPLE_GET hook fast path and push a
getter frame. Because the function JIT may keep values solely in registers,
exiting to the VM there leaves stale stack slots. Inline the by-value path
through zend_jit_fetch_obj (which runs the hook getter inside a helper and keeps
all registers live), and keep the by-ref path on the generic handler (a full C
call, safe under register allocation). The runtime by-ref check is required
because the passing mode is only known once the callee is resolved via namespace
fallback.

The IR block is extracted into zend_jit_fetch_obj_func_arg() in zend_jit_ir.c so
that IR-related code stays in that file, and the ZEND_FETCH_OBJ_FUNC_ARG case is
merged with the ZEND_FETCH_OBJ_R/IS/W case to deduplicate the setup.

This mirrors the tracing JIT fix for GH-21006 (GH-21369).

Fixes GH-22857.

Co-authored-by: coderzhao <coderzhao@tencent.com>
* PHP-8.4:
  CS
  Fix GH-22857: Function JIT emits wrong code for FETCH_OBJ_FUNC_ARG on a property hook (#22897)
* PHP-8.5:
  CS
  Fix GH-22857: Function JIT emits wrong code for FETCH_OBJ_FUNC_ARG on a property hook (#22897)
@pull pull Bot locked and limited conversation to collaborators Jul 30, 2026
@pull pull Bot added the ⤵️ pull label Jul 30, 2026
@pull
pull Bot merged commit 0b5d980 into turkdevops:master Jul 30, 2026
0 of 2 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants