@@ -403,14 +403,16 @@ static inline int mysql_handle_autocommit(pdo_dbh_t *dbh)
403
403
static bool pdo_mysql_set_attribute (pdo_dbh_t * dbh , zend_long attr , zval * val )
404
404
{
405
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 ;
406
+ bool bval ;
408
407
PDO_DBG_ENTER ("pdo_mysql_set_attribute" );
409
408
PDO_DBG_INF_FMT ("dbh=%p" , dbh );
410
409
PDO_DBG_INF_FMT ("attr=%l" , attr );
411
410
412
411
switch (attr ) {
413
412
case PDO_ATTR_AUTOCOMMIT :
413
+ if (!pdo_get_bool_param (& bval , val )) {
414
+ return false;
415
+ }
414
416
/* ignore if the new value equals the old one */
415
417
if (dbh -> auto_commit ^ bval ) {
416
418
dbh -> auto_commit = bval ;
@@ -428,17 +430,26 @@ static bool pdo_mysql_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val)
428
430
PDO_DBG_RETURN (true);
429
431
430
432
case PDO_MYSQL_ATTR_USE_BUFFERED_QUERY :
433
+ if (!pdo_get_bool_param (& bval , val )) {
434
+ return false;
435
+ }
431
436
/* ignore if the new value equals the old one */
432
437
((pdo_mysql_db_handle * )dbh -> driver_data )-> buffered = bval ;
433
438
PDO_DBG_RETURN (true);
434
439
435
440
case PDO_MYSQL_ATTR_DIRECT_QUERY :
436
441
case PDO_ATTR_EMULATE_PREPARES :
442
+ if (!pdo_get_bool_param (& bval , val )) {
443
+ return false;
444
+ }
437
445
/* ignore if the new value equals the old one */
438
446
((pdo_mysql_db_handle * )dbh -> driver_data )-> emulate_prepare = bval ;
439
447
PDO_DBG_RETURN (true);
440
448
441
449
case PDO_ATTR_FETCH_TABLE_NAMES :
450
+ if (!pdo_get_bool_param (& bval , val )) {
451
+ return false;
452
+ }
442
453
((pdo_mysql_db_handle * )dbh -> driver_data )-> fetch_table_names = bval ;
443
454
PDO_DBG_RETURN (true);
444
455
0 commit comments