summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2017-12-20 17:21:55 -0500
committerRobert Haas <rhaas@postgresql.org>2017-12-20 17:27:25 -0500
commit7be0d775a2e78d052c00f154741e9d8d76166fa3 (patch)
treee94f6613bf1bf9718bd845c27c5d4537518f880e
parent72567f6174605c36ba520c80e71697d2601cac0a (diff)
When passing query strings to workers, pass the terminating \0.
Otherwise, when the query string is read, we might trailing garbage beyond the end, unless there happens to be a \0 there by good luck. Report and patch by Thomas Munro. Reviewed by Rafia Sabih. Discussion: http://postgr.es/m/CAEepm=2SJs7X+_vx8QoDu8d1SMEOxtLhxxLNzZun_BvNkuNhrw@mail.gmail.com
-rw-r--r--src/backend/executor/execParallel.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/executor/execParallel.c b/src/backend/executor/execParallel.c
index 609643dcf94..60aaa822b7e 100644
--- a/src/backend/executor/execParallel.c
+++ b/src/backend/executor/execParallel.c
@@ -410,7 +410,7 @@ ExecInitParallelPlan(PlanState *planstate, EState *estate, int nworkers)
/* Estimate space for query text. */
query_len = strlen(estate->es_sourceText);
- shm_toc_estimate_chunk(&pcxt->estimator, query_len);
+ shm_toc_estimate_chunk(&pcxt->estimator, query_len + 1);
shm_toc_estimate_keys(&pcxt->estimator, 1);
/* Estimate space for serialized PlannedStmt. */
@@ -478,8 +478,8 @@ ExecInitParallelPlan(PlanState *planstate, EState *estate, int nworkers)
*/
/* Store query string */
- query_string = shm_toc_allocate(pcxt->toc, query_len);
- memcpy(query_string, estate->es_sourceText, query_len);
+ query_string = shm_toc_allocate(pcxt->toc, query_len + 1);
+ memcpy(query_string, estate->es_sourceText, query_len + 1);
shm_toc_insert(pcxt->toc, PARALLEL_KEY_QUERY_TEXT, query_string);
/* Store serialized PlannedStmt. */