mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
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
This commit is contained in:
parent
72567f6174
commit
7be0d775a2
@ -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. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user