From f93d24aa673f0d06fc8ecb5bdb211d7e82440f21 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 20 May 2015 08:08:41 +0200 Subject: Fixed Bug #69667 segfault in php_pgsql_meta_data Incomplete fix for #68741 --- ext/pgsql/pg_insert_002.phpt | 27 +++++++++++++++++++++++++++ ext/pgsql/pgsql.c | 9 +++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 ext/pgsql/pg_insert_002.phpt diff --git a/ext/pgsql/pg_insert_002.phpt b/ext/pgsql/pg_insert_002.phpt new file mode 100644 index 0000000000..1393f5f330 --- /dev/null +++ b/ext/pgsql/pg_insert_002.phpt @@ -0,0 +1,27 @@ +--TEST-- +PostgreSQL pg_select() - basic test using schema +--SKIPIF-- + +--FILE-- + 1, 'id2' => 1))); +} +?> +Done +--EXPECTF-- + +Warning: pg_insert(): The table name must be specified in %s on line %d +bool(false) + +Warning: pg_insert(): The table name must be specified in %s on line %d +bool(false) + +Warning: pg_insert(): The table name must be specified in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index cd51143c90..524b1854d7 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -5103,7 +5103,11 @@ PHP_PGSQL_API int php_pgsql_meta_data(PGconn *pg_link, const char *table_name, z src = estrdup(table_name); tmp_name = php_strtok_r(src, ".", &tmp_name2); - + if (!tmp_name) { + efree(src); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "The table name must be specified"); + return FAILURE; + } if (!tmp_name2 || !*tmp_name2) { /* Default schema */ tmp_name2 = tmp_name; @@ -6111,7 +6115,8 @@ static int do_exec(smart_str *querystr, int expect, PGconn *pg_link, ulong opt T static inline void build_tablename(smart_str *querystr, PGconn *pg_link, const char *table) { - char *table_copy, *escaped, *token, *tmp; + char *table_copy, *escaped, *tmp; + const char *token; size_t len; /* schame.table should be "schame"."table" */ -- cgit v1.2.1