Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 0c6207e

Browse files
committed
Appying patch for PGPRO1389
1 parent bd20b2e commit 0c6207e

File tree

1 file changed

+33
-4
lines changed

1 file changed

+33
-4
lines changed

contrib/pgpro_scheduler/src/scheduler_manager.c

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/*
2+
* contrib/pgpro_scheduler/src/scheduler_manager.c
3+
*/
14
#include <stdlib.h>
25
#include "postgres.h"
36

@@ -946,8 +949,21 @@ int launch_executor_worker(scheduler_manager_ctx_t *ctx, scheduler_manager_slot_
946949
void init_executor_shared_data(schd_executor_share_t *data, scheduler_manager_ctx_t *ctx, job_t *job)
947950
{
948951
data->status = SchdExecutorInit;
949-
memcpy(data->database, ctx->database, strlen(ctx->database));
950-
memcpy(data->nodename, job->node, strlen(job->node));
952+
953+
if(strlen(ctx->database) < PGPRO_SCHEDULER_DBNAME_MAX)
954+
strcpy(data->database, ctx->database);
955+
else
956+
elog(ERROR, "String \"%s\"\n"
957+
"has %d symbols, while it should have less than %d symbols.",
958+
ctx->database, strlen(ctx->database), PGPRO_SCHEDULER_DBNAME_MAX);
959+
960+
if(strlen(job->node) < PGPRO_SCHEDULER_NODENAME_MAX)
961+
strcpy(data->nodename, job->node);
962+
else
963+
elog(ERROR, "String \"%s\"\n"
964+
"has %d symbols, while it should have less than %d symbols.",
965+
job->node, strlen(job->node), PGPRO_SCHEDULER_NODENAME_MAX);
966+
951967
data->new_job = true;
952968

953969
if(job)
@@ -1775,8 +1791,21 @@ int start_at_worker(scheduler_manager_ctx_t *ctx, int pos)
17751791
item->res_owner = CurrentResourceOwner;
17761792
shm_data = dsm_segment_address(item->shared);
17771793

1778-
memcpy(shm_data->database, ctx->database, strlen(ctx->database));
1779-
memcpy(shm_data->nodename, ctx->nodename, strlen(ctx->nodename));
1794+
1795+
if(strlen(ctx->database) < PGPRO_SCHEDULER_DBNAME_MAX)
1796+
strcpy(shm_data->database, ctx->database);
1797+
else
1798+
elog(ERROR, "String \"%s\"\n"
1799+
"has %d symbols, while it should have less than %d symbols.",
1800+
ctx->database, strlen(ctx->database), PGPRO_SCHEDULER_DBNAME_MAX);
1801+
1802+
if(strlen(ctx->nodename) < PGPRO_SCHEDULER_NODENAME_MAX)
1803+
strcpy(shm_data->nodename, ctx->nodename);
1804+
else
1805+
elog(ERROR, "String \"%s\"\n"
1806+
"has %d symbols, while it should have less than %d symbols.",
1807+
ctx->nodename, strlen(ctx->nodename), PGPRO_SCHEDULER_NODENAME_MAX);
1808+
17801809
shm_data->stop_worker = false;
17811810
shm_data->status = SchdExecutorInit;
17821811
shm_data->start_at = 0;

0 commit comments

Comments
 (0)