com php-src: Revert "Fix #62479: Some chars not parsed in passwords": NEWS ext/pdo_pgsql/pgsql_driver.c ext/pdo_pgsql/tests/bug 62479.phpt

From: Date: Sun, 19 Jan 2014 18:02:20 +0000
Subject: com php-src: Revert "Fix #62479: Some chars not parsed in passwords": NEWS ext/pdo_pgsql/pgsql_driver.c ext/pdo_pgsql/tests/bug 62479.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-75699@lists.php.net to get a copy of this message
Commit: 8aa93b7f2cb23dc4c7a051276cec833fd4343c1d Author: Will Fitch <willfitch@php.net> Sun, 19 Jan 2014 13:02:20 -0500 Parents: e6bb90c66a5306f3db7ca38206b27685177a65cc Branches: PHP-5.3 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=8aa93b7f2cb23dc4c7a051276cec833fd4343c1d Log: Revert "Fix #62479: Some chars not parsed in passwords" This reverts commit e6bb90c66a5306f3db7ca38206b27685177a65cc. Bugs: https://bugs.php.net/62479 Changed paths: M NEWS M ext/pdo_pgsql/pgsql_driver.c D ext/pdo_pgsql/tests/bug62479.phpt Diff: diff --git a/NEWS b/NEWS index e05c987..72c0939 100644 --- a/NEWS +++ b/NEWS @@ -2,9 +2,6 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 201?, PHP 5.3.29 -- PDO_pgsql: - . Fixed bug #62479 (PDO-psql cannot connect if password contains spaces) - 12 Dec 2013, PHP 5.3.28 - Openssl: diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index e2ad143..55f4418 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -1029,7 +1029,6 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ pdo_pgsql_db_handle *H; int ret = 0; char *conn_str, *p, *e; - char *tmp_pass; long connect_timeout = 30; H = pecalloc(1, sizeof(pdo_pgsql_db_handle), dbh->is_persistent); @@ -1051,44 +1050,18 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ connect_timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, 30 TSRMLS_CC); } - if (dbh->password) { - if (dbh->password[0] != '\'' && dbh->password[strlen(dbh->password) - 1] != '\'') { - char *pwd = dbh->password; - int pos = 1; - - tmp_pass = safe_emalloc(2, strlen(dbh->password), 3); - tmp_pass[0] = '\''; - - while (*pwd != '\0') { - if (*pwd == '\\' || *pwd == '\'') { - tmp_pass[pos++] = '\\'; - } - - tmp_pass[pos++] = *pwd++; - } - - tmp_pass[pos++] = '\''; - tmp_pass[pos] = '\0'; - } else { - tmp_pass = dbh->password; - } - } - /* support both full connection string & connection string + login and/or password */ if (dbh->username && dbh->password) { - spprintf(&conn_str, 0, "%s user=%s password=%s connect_timeout=%ld", dbh->data_source, dbh->username, tmp_pass, connect_timeout); + spprintf(&conn_str, 0, "%s user=%s password=%s connect_timeout=%ld", dbh->data_source, dbh->username, dbh->password, connect_timeout); } else if (dbh->username) { spprintf(&conn_str, 0, "%s user=%s connect_timeout=%ld", dbh->data_source, dbh->username, connect_timeout); } else if (dbh->password) { - spprintf(&conn_str, 0, "%s password=%s connect_timeout=%ld", dbh->data_source, tmp_pass, connect_timeout); + spprintf(&conn_str, 0, "%s password=%s connect_timeout=%ld", dbh->data_source, dbh->password, connect_timeout); } else { spprintf(&conn_str, 0, "%s connect_timeout=%ld", (char *) dbh->data_source, connect_timeout); } H->server = PQconnectdb(conn_str); - if (dbh->password && tmp_pass != dbh->password) { - efree(tmp_pass); - } efree(conn_str); diff --git a/ext/pdo_pgsql/tests/bug62479.phpt b/ext/pdo_pgsql/tests/bug62479.phpt deleted file mode 100644 index 2e19f15..0000000 --- a/ext/pdo_pgsql/tests/bug62479.phpt +++ /dev/null @@ -1,56 +0,0 @@ ---TEST-- -PDO PgSQL Bug #62479 (PDO-psql cannot connect if password contains spaces) ---SKIPIF-- -<?php -if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded'); -require dirname(__FILE__) . '/config.inc'; -require dirname(__FILE__) . '/../.../../ext/pdo/tests/pdo_test.inc'; -PDOTest::skip(); -if (!isset($conf['ENV']['PDOTEST_DSN'])) die('no dsn found in env'); -$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); -$rand = rand(5, 5); - -// Assume that if we can't create a user, this test needs to be skipped -$testQuery = "CREATE USER pdo_$rand WITH PASSWORD 'testpass'"; -$db->query($testQuery); -$testQuery = "DROP USER pdo_$rand"; -$db->query($testQuery); -?> ---FILE-- -<?php -require dirname(__FILE__) . '/.../../../ext/pdo/tests/pdo_test.inc'; -$pdo = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); -$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); -$rand = rand(5, 400); -$user = "pdo_$rand"; -$template = "CREATE USER $user WITH PASSWORD '%s'"; -$dropUser = "DROP USER $user"; -$testQuery = 'SELECT 1 as verification'; - -// Create temp user with space in password -$sql = sprintf($template, 'my password'); -$pdo->query($sql); -$testConn = new PDO($_ENV['PDOTEST_DSN'], $user, "my password"); -$result = $testConn->query($testQuery)->fetch(); -$check = $result[0]; -var_dump($check); - -// Remove the user -$pdo->query($dropUser); - -// Create a user with a space and single quote -$sql = sprintf($template, "my pass''word"); -$pdo->query($sql); - -$testConn = new PDO($_ENV['PDOTEST_DSN'], $user, "my pass'word"); -$result = $testConn->query($testQuery)->fetch(); -$check = $result[0]; -var_dump($check); - -// Remove the user -$pdo->query($dropUser); -?> ---EXPECT-- -int(1) -int(1) -

« previous php.cvs (#75699) next »