@@ -402,11 +402,13 @@ static inline int mysql_handle_autocommit(pdo_dbh_t *dbh)
402
402
/* {{{ pdo_mysql_set_attribute */
403
403
static bool pdo_mysql_set_attribute (pdo_dbh_t * dbh , zend_long attr , zval * val )
404
404
{
405
- zend_long lval = zval_get_long (val );
406
- bool bval = lval ? 1 : 0 ;
405
+ zend_long lval ;
406
+ /* Don't use pdo_get_long_param() API as zval_get_long accepts more things */
407
+ bool bval = zval_get_long (val ) ? 1 : 0 ;
407
408
PDO_DBG_ENTER ("pdo_mysql_set_attribute" );
408
409
PDO_DBG_INF_FMT ("dbh=%p" , dbh );
409
410
PDO_DBG_INF_FMT ("attr=%l" , attr );
411
+
410
412
switch (attr ) {
411
413
case PDO_ATTR_AUTOCOMMIT :
412
414
/* 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)
419
421
PDO_DBG_RETURN (true);
420
422
421
423
case PDO_ATTR_DEFAULT_STR_PARAM :
424
+ if (!pdo_get_long_param (& lval , val )) {
425
+ PDO_DBG_RETURN (false);
426
+ }
422
427
((pdo_mysql_db_handle * )dbh -> driver_data )-> assume_national_character_set_strings = lval == PDO_PARAM_STR_NATL ;
423
428
PDO_DBG_RETURN (true);
424
429
@@ -439,6 +444,9 @@ static bool pdo_mysql_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val)
439
444
440
445
#ifndef PDO_USE_MYSQLND
441
446
case PDO_MYSQL_ATTR_MAX_BUFFER_SIZE :
447
+ if (!pdo_get_long_param (& lval , val )) {
448
+ PDO_DBG_RETURN (false);
449
+ }
442
450
if (lval < 0 ) {
443
451
/* TODO: Johannes, can we throw a warning here? */
444
452
((pdo_mysql_db_handle * )dbh -> driver_data )-> max_buffer_size = 1024 * 1024 ;
0 commit comments