@@ -946,8 +946,21 @@ int launch_executor_worker(scheduler_manager_ctx_t *ctx, scheduler_manager_slot_
946
946
void init_executor_shared_data (schd_executor_share_t * data , scheduler_manager_ctx_t * ctx , job_t * job )
947
947
{
948
948
data -> status = SchdExecutorInit ;
949
- memcpy (data -> database , ctx -> database , strlen (ctx -> database ));
950
- memcpy (data -> nodename , job -> node , strlen (job -> node ));
949
+
950
+ if (strlen (ctx -> database ) < PGPRO_SCHEDULER_DBNAME_MAX )
951
+ strcpy (data -> database , ctx -> database );
952
+ else
953
+ elog (ERROR , "String \"%s\"\n"
954
+ "has %zu symbols, while it should have less than %d symbols." ,
955
+ ctx -> database , strlen (ctx -> database ), PGPRO_SCHEDULER_DBNAME_MAX );
956
+
957
+ if (strlen (job -> node ) < PGPRO_SCHEDULER_NODENAME_MAX )
958
+ strcpy (data -> nodename , job -> node );
959
+ else
960
+ elog (ERROR , "String \"%s\"\n"
961
+ "has %zu symbols, while it should have less than %d symbols." ,
962
+ job -> node , strlen (job -> node ), PGPRO_SCHEDULER_NODENAME_MAX );
963
+
951
964
data -> new_job = true;
952
965
953
966
if (job )
@@ -1775,8 +1788,20 @@ int start_at_worker(scheduler_manager_ctx_t *ctx, int pos)
1775
1788
item -> res_owner = CurrentResourceOwner ;
1776
1789
shm_data = dsm_segment_address (item -> shared );
1777
1790
1778
- memcpy (shm_data -> database , ctx -> database , strlen (ctx -> database ));
1779
- memcpy (shm_data -> nodename , ctx -> nodename , strlen (ctx -> nodename ));
1791
+ if (strlen (ctx -> database ) < PGPRO_SCHEDULER_DBNAME_MAX )
1792
+ strcpy (shm_data -> database , ctx -> database );
1793
+ else
1794
+ elog (ERROR , "String \"%s\"\n"
1795
+ "has %zu symbols, while it should have less than %d symbols." ,
1796
+ ctx -> database , strlen (ctx -> database ), PGPRO_SCHEDULER_DBNAME_MAX );
1797
+
1798
+ if (strlen (ctx -> nodename ) < PGPRO_SCHEDULER_NODENAME_MAX )
1799
+ strcpy (shm_data -> nodename , ctx -> nodename );
1800
+ else
1801
+ elog (ERROR , "String \"%s\"\n"
1802
+ "has %zu symbols, while it should have less than %d symbols." ,
1803
+ ctx -> nodename , strlen (ctx -> nodename ), PGPRO_SCHEDULER_NODENAME_MAX );
1804
+
1780
1805
shm_data -> stop_worker = false;
1781
1806
shm_data -> status = SchdExecutorInit ;
1782
1807
shm_data -> start_at = 0 ;
0 commit comments