diff options
author | George Peter Banyard <girgias@php.net> | 2021-03-15 15:30:58 +0000 |
---|---|---|
committer | George Peter Banyard <girgias@php.net> | 2021-03-17 00:58:01 +0000 |
commit | c465462e912eae73d1e0407f2d2cb815f40f1c13 (patch) | |
tree | 9abd9996e7f4d4e2128a57cf41158b86a3300796 /ext/pdo_mysql | |
parent | 32fb9b6fd17f6f5b965ac8b2fb69cbfda7603416 (diff) | |
download | php-git-c465462e912eae73d1e0407f2d2cb815f40f1c13.tar.gz |
Use standard PDO way for fetching integer attribute values
Diffstat (limited to 'ext/pdo_mysql')
-rw-r--r-- | ext/pdo_mysql/mysql_driver.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index 94fa2411d6..74a24be399 100644 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -402,11 +402,13 @@ static inline int mysql_handle_autocommit(pdo_dbh_t *dbh) /* {{{ pdo_mysql_set_attribute */ static bool pdo_mysql_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val) { - zend_long lval = zval_get_long(val); - bool bval = lval ? 1 : 0; + zend_long lval; + /* Don't use pdo_get_long_param() API as zval_get_long accepts more things */ + bool bval = zval_get_long(val) ? 1 : 0; PDO_DBG_ENTER("pdo_mysql_set_attribute"); PDO_DBG_INF_FMT("dbh=%p", dbh); PDO_DBG_INF_FMT("attr=%l", attr); + switch (attr) { case PDO_ATTR_AUTOCOMMIT: /* ignore if the new value equals the old one */ @@ -419,6 +421,9 @@ static bool pdo_mysql_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val) PDO_DBG_RETURN(true); case PDO_ATTR_DEFAULT_STR_PARAM: + if (!pdo_get_long_param(&lval, val)) { + PDO_DBG_RETURN(false); + } ((pdo_mysql_db_handle *)dbh->driver_data)->assume_national_character_set_strings = lval == PDO_PARAM_STR_NATL; PDO_DBG_RETURN(true); @@ -439,6 +444,9 @@ static bool pdo_mysql_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val) #ifndef PDO_USE_MYSQLND case PDO_MYSQL_ATTR_MAX_BUFFER_SIZE: + if (!pdo_get_long_param(&lval, val)) { + PDO_DBG_RETURN(false); + } if (lval < 0) { /* TODO: Johannes, can we throw a warning here? */ ((pdo_mysql_db_handle *)dbh->driver_data)->max_buffer_size = 1024*1024; |