com php-src: Merge remote-tracking branch 'origin/master' into str_size_and_int64: ext/pdo_pgsql/pgsql_drive r.c sapi/phpdbg/phpdbg_cmd.c
| From: | Anatol Belski | Date: | Sun, 19 Jan 2014 01:17:07 +0000 |
| Subject: | com php-src: Merge remote-tracking branch 'origin/master' into str_size_and_int64: ext/pdo_pgsql/pgsql_drive r.c sapi/phpdbg/phpdbg_cmd.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-75696@lists.php.net to get a copy of this message | ||
Commit: e3cfbef33f4a7ea8074a8724d2072d967f740321
Author: Anatol Belski <ab@php.net> Sun, 19 Jan 2014 02:17:07 +0100
Parents: bc7dc1913ced7061027a50e17351d20f9bf5e55f d788a85736abd4701004f3dcb3881ec7a7f9a4df
Branches: str_size_and_int64
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=e3cfbef33f4a7ea8074a8724d2072d967f740321
Log:
Merge remote-tracking branch 'origin/master' into str_size_and_int64
Conflicts:
ext/pdo_pgsql/pgsql_driver.c
Changed paths:
MM ext/pdo_pgsql/pgsql_driver.c
MM sapi/phpdbg/phpdbg_cmd.c
Diff:
diff --cc ext/pdo_pgsql/pgsql_driver.c
index 3a04ca6,9b083f6..7fd6886
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@@ -1159,7 -1155,8 +1159,8 @@@ static int pdo_pgsql_handle_factory(pdo
pdo_pgsql_db_handle *H;
int ret = 0;
char *conn_str, *p, *e;
+ char *tmp_pass;
- long connect_timeout = 30;
+ php_int_t connect_timeout = 30;
H = pecalloc(1, sizeof(pdo_pgsql_db_handle), dbh->is_persistent);
dbh->driver_data = H;
@@@ -1177,18 -1174,41 +1178,41 @@@
}
if (driver_options) {
- connect_timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, 30 TSRMLS_CC);
+ connect_timeout = pdo_attr_ival(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=%pd",
dbh->data_source, dbh->username, dbh->password, connect_timeout);
- 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=%pd",
dbh->data_source, dbh->username, tmp_pass, connect_timeout);
} else if (dbh->username) {
- spprintf(&conn_str, 0, "%s user=%s connect_timeout=%ld", dbh->data_source,
dbh->username, connect_timeout);
+ spprintf(&conn_str, 0, "%s user=%s connect_timeout=%pd", dbh->data_source,
dbh->username, connect_timeout);
} else if (dbh->password) {
- spprintf(&conn_str, 0, "%s password=%s connect_timeout=%pd", dbh->data_source,
dbh->password, connect_timeout);
- 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=%pd", dbh->data_source,
tmp_pass, connect_timeout);
} else {
- spprintf(&conn_str, 0, "%s connect_timeout=%ld", (char *) dbh->data_source,
connect_timeout);
+ spprintf(&conn_str, 0, "%s connect_timeout=%pd", (char *) dbh->data_source,
connect_timeout);
}
H->server = PQconnectdb(conn_str);