Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 0 additions & 61 deletions phpstan.dist.neon
Original file line number Diff line number Diff line change
Expand Up @@ -68,67 +68,6 @@ parameters:
-
identifier: offsetAccess.nonOffsetAccessible
path: src/Type/StructArray.php
# PayloadRelocator is the file-cache pointer-surgery machinery: it walks
# engine structs field by field through FFI\CData, so a chained access
# (`$zval->u1->v->type`) resolves to `mixed` after the first hop and the
# arithmetic/casts on those reads cannot be statically typed. The FFI
# blast radius is confined to this one audited file (AGENTS.md); every
# path is covered by the byte-identity and execute-from-cache tests.
-
identifier: property.nonObject
path: src/OpCache/PayloadRelocator.php
-
identifier: binaryOp.invalid
path: src/OpCache/PayloadRelocator.php
-
identifier: cast.int
path: src/OpCache/PayloadRelocator.php
-
identifier: argument.type
path: src/OpCache/PayloadRelocator.php
# ScriptSerializer is the second audited pointer-surgery file (the
# persist-from-graph writer, issue #117): the same CData field walking
# as PayloadRelocator, covered by the rebuild/graft execute-from-cache
# tests and the relocator round-trip identity checks.
-
identifier: property.nonObject
path: src/OpCache/ScriptSerializer.php
-
identifier: binaryOp.invalid
path: src/OpCache/ScriptSerializer.php
-
identifier: cast.int
path: src/OpCache/ScriptSerializer.php
-
identifier: argument.type
path: src/OpCache/ScriptSerializer.php
# ReflectionOpcacheFile is the CData facade over the relocated script:
# it reads embedded engine structs (script.filename, function/class
# tables) that resolve to `mixed` after the first CData hop; since
# issue #117 it also carries the graft plumbing (image hashtable
# regrowth), which does the same CData arithmetic.
-
identifier: property.nonObject
path: src/OpCache/ReflectionOpcacheFile.php
-
identifier: argument.type
path: src/OpCache/ReflectionOpcacheFile.php
-
identifier: binaryOp.invalid
path: src/OpCache/ReflectionOpcacheFile.php
-
identifier: cast.int
path: src/OpCache/ReflectionOpcacheFile.php
-
identifier: assignOp.invalid
path: src/OpCache/ReflectionOpcacheFile.php
# BoundsValidationTest crafts hostile payloads by poking engine-struct
# pointer fields through FFI\CData (the address of a filename/HashTable
# slot to overwrite), the same pointer surgery PayloadRelocator does -
# FFI::addr() on a CData field read resolves to mixed here.
-
identifier: argument.type
path: tests/OpCache/BoundsValidationTest.php
# The dimension tests exist to prove that a plain `count($object)` reaches the engine's
# count_elements handler on a class that never declared the count itself. Rewriting them
# as assertCount() would measure PHPUnit's Count constraint instead of the language
Expand Down
Loading
Loading