From 01f7776cc9a79a2d8e362194c5a6ed8384b2de2e Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Mon, 14 Sep 2015 14:35:51 +0300 Subject: [PATCH] Escape portal identifier --- modules/gpgsqlbackend/spgsql.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/gpgsqlbackend/spgsql.cc b/modules/gpgsqlbackend/spgsql.cc index 18f07d5877..d7c3fcc503 100644 --- a/modules/gpgsqlbackend/spgsql.cc +++ b/modules/gpgsqlbackend/spgsql.cc @@ -96,8 +96,10 @@ public: // by stored procedures. you can return more than one // if you return SETOF refcursor. if (PQftype(d_res_set, 0) == 1790) { // REFCURSOR - string portal = string(PQgetvalue(d_res_set, d_cur_set++, 0)); - string cmd = string("FETCH ALL FROM \"") + portal + string("\""); + char *val = PQgetvalue(d_res_set, d_cur_set++, 0); + char *portal = PQescapeIdentifier(d_db(), val, strlen(val)); + string cmd = string("FETCH ALL FROM \"") + string(portal) + string("\""); + PQfreemem(portal); // execute FETCH if (d_dolog) L<