Skip to content

Commit 645b037

Browse files
committed
Fix double free of DSN credentials
1 parent f5dfea6 commit 645b037

File tree

4 files changed

+8
-8
lines changed

4 files changed

+8
-8
lines changed

ext/pdo_dblib/dblib_driver.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ static int pdo_dblib_handle_factory(pdo_dbh_t *dbh, zval *driver_options)
522522
}
523523

524524
if (!dbh->username && vars[6].optval) {
525-
dbh->username = vars[6].optval;
525+
dbh->username = pestrdup(vars[6].optval, dbh->is_persistent);
526526
}
527527

528528
if (dbh->username) {
@@ -532,7 +532,7 @@ static int pdo_dblib_handle_factory(pdo_dbh_t *dbh, zval *driver_options)
532532
}
533533

534534
if (!dbh->password && vars[7].optval) {
535-
dbh->password = vars[7].optval;
535+
dbh->password = pestrdrup(vars[7].optval, dbh->is_persistent);
536536
}
537537

538538
if (dbh->password) {

ext/pdo_firebird/firebird_driver.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -635,11 +635,11 @@ static int pdo_firebird_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /*
635635
php_pdo_parse_data_source(dbh->data_source, dbh->data_source_len, vars, 5);
636636

637637
if (!dbh->username && vars[3].optval) {
638-
dbh->username = vars[3].optval;
638+
dbh->username = pestrdup(vars[3].optval, dbh->is_persistent);
639639
}
640640

641641
if (!dbh->password && vars[4].optval) {
642-
dbh->password = vars[4].optval;
642+
dbh->password = pestrdup(vars[4].optval, dbh->is_persistent);
643643
}
644644

645645
do {

ext/pdo_mysql/mysql_driver.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -811,11 +811,11 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options)
811811
}
812812

813813
if (!dbh->username && vars[5].optval) {
814-
dbh->username = vars[5].optval;
814+
dbh->username = pestrdup(vars[5].optval, dbh->is_persistent);
815815
}
816816

817817
if (!dbh->password && vars[6].optval) {
818-
dbh->password = vars[6].optval;
818+
dbh->password = pestrdup(vars[6].optval, dbh->is_persistent);
819819
}
820820

821821
/* TODO: - Check zval cache + ZTS */

ext/pdo_oci/oci_driver.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ static int pdo_oci_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /* {{{ *
748748

749749
/* username */
750750
if (!dbh->username && vars[2].optval) {
751-
dbh->username = vars[2].optval;
751+
dbh->username = pestrdup(vars[2].optval, dbh->is_persistent);
752752
}
753753

754754
if (dbh->username) {
@@ -763,7 +763,7 @@ static int pdo_oci_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /* {{{ *
763763

764764
/* password */
765765
if (!dbh->password && vars[3].optval) {
766-
dbh->password = vars[3].optval;
766+
dbh->password = pestrdup(vars[3].optval, dbh->is_persistent);
767767
}
768768

769769
if (dbh->password) {

0 commit comments

Comments
 (0)