Skip to content

Fix GH-23758: PDO_Firebird returns null for empty BLOBs - #23763

Closed
lazerg wants to merge 1 commit into
php:PHP-8.4from
lazerg:fix/gh-23758-empty-blob
Closed

lazerg wants to merge 1 commit into
php:PHP-8.4from
lazerg:fix/gh-23758-empty-blob

Conversation

@lazerg

@lazerg lazerg commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

php_firebird_fetch_blob() only assigns the fetched string when the BLOB has a non-zero length, so a stored empty BLOB left the result zval at the NULL that PDO initialises it to. Callers could not tell an empty BLOB apart from SQL NULL, even though Firebird stores them distinctly.

An empty BLOB now yields an empty string. SQL NULL still returns null, since that case is handled earlier in pdo_firebird_stmt_get_col().

Fixes #23758

@lazerg
lazerg force-pushed the fix/gh-23758-empty-blob branch from 14e9334 to d22da5e Compare September 18, 2026 21:13

@SakiTakamachi SakiTakamachi left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

SakiTakamachi added a commit that referenced this pull request Sep 29, 2026
* PHP-8.6:
  Fix GH-23758: PDO_Firebird returns null for empty BLOBs (#23763)
pull Bot pushed a commit to edisplay/php-src that referenced this pull request Sep 29, 2026
* PHP-8.4:
  Fix phpGH-23758: PDO_Firebird returns null for empty BLOBs (php#23763)
pull Bot pushed a commit to edisplay/php-src that referenced this pull request Sep 29, 2026
* PHP-8.5:
  Fix phpGH-23758: PDO_Firebird returns null for empty BLOBs (php#23763)
bukka added a commit to bukka/php-src that referenced this pull request Sep 29, 2026
* upstream/master: (99 commits)
  NEWS
  Fix property hook escape analysis causing misoptimization
  Fix __isset escape analysis causing misoptimization
  Fix memory leak when closing a statement on a killed connection
  Reset field_count for OK packet (php#23890)
  Fix phpGH-23986: Clear the realpath cache in the child after pcntl_fork() (php#23987)
  ext/standard: Remove redundant if-branch in rot13 (php#23795)
  ext/pdo: Throw a ValueError from bindColumn() for an unknown column (php#23835)
  Zend: rename zend_object* parameter to "this_ptr" for zend_call_* functions (php#23989)
  ext/pdo: Release driver options after bindParam and bindColumn
  tests: Raise test stack for stream error depth limit under MSan (php#23985)
  Zend: Remove zend_atomic.[ch] abstraction (php#23927)
  fibers: fix phpGH-23921 (Fibers start with error_reporting = 0 when the error_reporting INI directive is not set)
  ext/pdo: Keep statement class when ATTR_STATEMENT_CLASS is rejected
  Verify bundled sources using CI - Opcache JIT IR (php#20179)
  zend_portability: Simplify definition of `ZEND_NORETURN` (php#23908)
  Fix phpGH-23758: PDO_Firebird returns null for empty BLOBs (php#23763)
  Remove redundant parentheses in session tests (php#23609)
  Update IR (php#23861)
  Fix OSS-Fuzz #552682112: assertion failure wrt zp_arg_must_be_sent_by_ref() (php#23760)
  ...

# Conflicts:
#	ext/openssl/xp_ssl.c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants