You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-06-18 23:57:33 +02:00
Fix segfault when process-max > 8 for archive-push/archive-get.
The remote list was at most 9 (based on pg[1-8]-* max index) so anything over 8 wrote into unallocated memory. The remote for the main process is (currently) stored in position zero so do the same for remotes started from locals, since there should only be one. The main process will need to start more remotes in the future which is why there is extra space. Reported by Jens Wilke.
This commit is contained in:
@ -685,7 +685,7 @@ testRun(void)
|
||||
strLstAdd(argList, strNewFmt("--config=%s/pgbackrest.conf", testPath()));
|
||||
strLstAddZ(argList, "--repo1-host=localhost");
|
||||
strLstAdd(argList, strNewFmt("--repo1-path=%s", testPath()));
|
||||
strLstAddZ(argList, "--process=4");
|
||||
strLstAddZ(argList, "--process=999");
|
||||
strLstAddZ(argList, "--command=archive-get");
|
||||
strLstAddZ(argList, "--host-id=1");
|
||||
strLstAddZ(argList, "--type=db");
|
||||
@ -694,7 +694,7 @@ testRun(void)
|
||||
|
||||
TEST_RESULT_STR(strPtr(cfgOptionStr(cfgOptRepoCipherPass)), "acbd", "check cipher pass before");
|
||||
TEST_ASSIGN(client, protocolRemoteGet(protocolStorageTypeRepo), "get remote protocol");
|
||||
TEST_RESULT_PTR(protocolHelper.clientRemote[4].client, client, "check position in cache");
|
||||
TEST_RESULT_PTR(protocolHelper.clientRemote[0].client, client, "check position in cache");
|
||||
TEST_RESULT_STR(strPtr(cfgOptionStr(cfgOptRepoCipherPass)), "acbd", "check cipher pass after");
|
||||
|
||||
TEST_RESULT_VOID(protocolFree(), "free remote protocol objects");
|
||||
|
Reference in New Issue
Block a user