Commit 8bbe4b4119c for php.net

commit 8bbe4b4119c122f6186a321b286821cf6eeadc55
Merge: 03b148ce427 50decba4a80
Author: ndossche <7771979+ndossche@users.noreply.github.com>
Date:   Thu Jun 11 22:40:31 2026 +0200

    Merge branch 'PHP-8.5'

    * PHP-8.5:
      sqlite: fix error checks for column retrieval

diff --cc ext/sqlite3/sqlite3.c
index d257703f17a,a9e2a3a6c30..bef568a62df
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@@ -630,13 -653,33 +636,33 @@@ static void sqlite_value_to_zval(php_sq
  			ZVAL_NULL(data);
  			break;

- 		case SQLITE3_TEXT:
- 			ZVAL_STRINGL(data, (const char *) sqlite3_column_text(stmt, column), sqlite3_column_bytes(stmt, column));
+ 		case SQLITE3_TEXT: {
+ 			const char *text = (const char *) sqlite3_column_text(stmt, column);
+ 			if (UNEXPECTED(text == NULL)) {
+ 				php_sqlite3_error(db_obj, SQLITE_NOMEM, "Failed to retrieve column value due to out of memory");
+ 				ZVAL_NULL(data);
+ 			} else {
 -				ZVAL_STRING(data, text);
++				ZVAL_STRINGL(data, text, sqlite3_column_bytes(stmt, column));
+ 			}
  			break;
+ 		}

  		case SQLITE_BLOB:
- 		default:
- 			ZVAL_STRINGL(data, (char*)sqlite3_column_blob(stmt, column), sqlite3_column_bytes(stmt, column));
+ 		default: {
+ 			const char *blob = (const char *) sqlite3_column_blob(stmt, column);
+ 			if (UNEXPECTED(blob == NULL)) {
+ 				if (sqlite3_errcode(sqlite3_db_handle(stmt)) == SQLITE_NOMEM) {
+ 					php_sqlite3_error(db_obj, SQLITE_NOMEM, "Failed to retrieve column value due to out of memory");
+ 					ZVAL_NULL(data);
+ 				} else {
+ 					/* Zero-length BLOB */
+ 					ZVAL_EMPTY_STRING(data);
+ 				}
+ 			} else {
+ 				ZVAL_STRINGL(data, blob, sqlite3_column_bytes(stmt, column));
+ 			}
+ 			break;
+ 		}
  	}
  }
  /* }}} */