| Package Information |
| Summary |
PHP Judy implements sparse dynamic arrays (aka Judy Arrays) |
| Maintainers |
Nicolas Brousse <
nicolas at php dot net >
(lead)
[wishlist]
[details]
|
| License |
PHP |
| Description |
PHP Judy implements sparse dynamic arrays (aka Judy Arrays). This extension is based
on the Judy C library. A Judy array consumes memory only when it is populated,
yet can grow to take advantage of all available memory if desired. Judy's key benefits
are scalability, high performance, and memory efficiency. |
| Homepage |
http://github.com/orieg/php-judy
|
Release notes
Version 2.8.0
(stable)
|
- SECURITY FIX: appending to a string-keyed array ($j[] = ...) no longer crashes; the append guard now enumerates all seven string-keyed types, including Judy::STRING_TO_ENTRY (#217). - SECURITY FIX: forEach()/filter()/map() on Judy::STRING_TO_ENTRY read each value through the entry accessor instead of reinterpreting a cache-entry struct as a zval (out-of-bounds read / crash); equals() gained a matching ENTRY branch (#217). - SECURITY FIX: set() rejects keys longer than the 64 KB key buffer before taking a slot, closing a heap overflow reachable through an oversized key; deleteRange() on string-keyed ENTRY arrays now frees the cache-entry struct and its value reference instead of leaking both (#217). - FIX: expired STRING_TO_ENTRY values are hidden from reads and traversals (iterator, get, keys/values/toArray) while count()/size() stay raw-counter O(1) until pruneExpired(). mergeWith() copies TTL and flags verbatim, and get_gc() collects stored ENTRY values so value cycles are collectable (#217). - FIX: wrong-category range bounds now throw TypeError instead of silently coercing to a wrong-range read: int-keyed keys()/values()/toArray()/size()/ slice() reject non-numeric string bounds, and string-keyed deleteRange() rejects integer bounds (#217). - FIX: __unserialize() validates the serialized type, payload shape and optimizeIteration flag strictly before touching the object, so a malformed payload throws without destroying or corrupting an already-populated array, and an out-of-range type throws instead of emitting an E_WARNING (#225). |