From 095a6f1eb34f764646f84e8089463bcb7a72069b Mon Sep 17 00:00:00 2001 From: Edin Kadribasic Date: Mon, 17 Jan 2005 10:37:41 +0000 Subject: [PATCH] Use PQescapeBytea() for quoting. Need to think how to add binary safe quoting for blobls (pgsql bytea type). Fixes #2818 --- ext/pdo_pgsql/pgsql_driver.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index f0815cbada..e60fbc1f87 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -175,18 +175,12 @@ static long pgsql_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRM static int pgsql_handle_quoter(pdo_dbh_t *dbh, const char *unquoted, int unquotedlen, char **quoted, int *quotedlen TSRMLS_DC) { - unsigned char *escaped; - - /* escapedlen returned by PQescapeBytea() accounts for trailing 0 */ - escaped = PQescapeBytea(unquoted, unquotedlen, quotedlen); - *quotedlen += 1; - *quoted = emalloc(*quotedlen + 1); - memcpy((*quoted)+1, escaped, *quotedlen-2); + *quoted = emalloc(2*unquotedlen + 3); (*quoted)[0] = '\''; - (*quoted)[*quotedlen-1] = '\''; - (*quoted)[*quotedlen] = '\0'; - free(escaped); - + *quotedlen = PQescapeString(*quoted + 1, unquoted, unquotedlen); + (*quoted)[*quotedlen + 1] = '\''; + (*quoted)[*quotedlen + 2] = '\0'; + *quotedlen += 2; return 1; } -- 2.50.1