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;
+ }
}
}
/* }}} */