From 3a992381838708a04dd801ed97dc644ed57ae936 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sun, 8 Jun 2025 11:44:01 +0200 Subject: [PATCH 1/2] pdo_dblib: Use stack local array instead of heap allocation --- ext/pdo_dblib/dblib_driver.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/ext/pdo_dblib/dblib_driver.c b/ext/pdo_dblib/dblib_driver.c index 0055dcb03b3c5..8c5f9fb09d694 100644 --- a/ext/pdo_dblib/dblib_driver.c +++ b/ext/pdo_dblib/dblib_driver.c @@ -233,9 +233,8 @@ zend_string *dblib_handle_last_id(pdo_dbh_t *dbh, const zend_string *name) pdo_dblib_db_handle *H = (pdo_dblib_db_handle *)dbh->driver_data; RETCODE ret; - char *id = NULL; + BYTE id[32]; size_t len; - zend_string *ret_id; /* * Would use scope_identity() but it's not implemented on Sybase @@ -267,13 +266,10 @@ zend_string *dblib_handle_last_id(pdo_dbh_t *dbh, const zend_string *name) return NULL; } - id = emalloc(32); len = dbconvert(NULL, (dbcoltype(H->link, 1)) , (dbdata(H->link, 1)) , (dbdatlen(H->link, 1)), SQLCHAR, (BYTE *)id, (DBINT)-1); dbcancel(H->link); - ret_id = zend_string_init(id, len, 0); - efree(id); - return ret_id; + return zend_string_init(id, len, 0); } static bool dblib_set_attr(pdo_dbh_t *dbh, zend_long attr, zval *val) From 93b1bc0929284d50e2a6c0e85f8527b41946d25a Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sun, 8 Jun 2025 13:03:41 +0200 Subject: [PATCH 2/2] fix warning --- ext/pdo_dblib/dblib_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/pdo_dblib/dblib_driver.c b/ext/pdo_dblib/dblib_driver.c index 8c5f9fb09d694..132e5c2e4dee1 100644 --- a/ext/pdo_dblib/dblib_driver.c +++ b/ext/pdo_dblib/dblib_driver.c @@ -269,7 +269,7 @@ zend_string *dblib_handle_last_id(pdo_dbh_t *dbh, const zend_string *name) len = dbconvert(NULL, (dbcoltype(H->link, 1)) , (dbdata(H->link, 1)) , (dbdatlen(H->link, 1)), SQLCHAR, (BYTE *)id, (DBINT)-1); dbcancel(H->link); - return zend_string_init(id, len, 0); + return zend_string_init((const char *) id, len, 0); } static bool dblib_set_attr(pdo_dbh_t *dbh, zend_long attr, zval *val)