diff --git a/matlab/parallel/dynareParallelRmDir.m b/matlab/parallel/dynareParallelRmDir.m index fbdf3ad39c93f828510c93640daef00e181a7773..e52786eeda339877d09d1d86ad58bb2e362a97eb 100644 --- a/matlab/parallel/dynareParallelRmDir.m +++ b/matlab/parallel/dynareParallelRmDir.m @@ -35,10 +35,28 @@ if nargin ==0, return end +% security check of remote folder delete +ok(1)=isempty(strfind(Parallel_info.RemoteTmpFolder,'..')); +tmp1=strfind(Parallel_info.RemoteTmpFolder,'2'); +ok(2)=tmp1(1)==1; +ok(3)=~isempty(strfind(Parallel_info.RemoteTmpFolder,'-')); +ok(4)=~isempty(strfind(Parallel_info.RemoteTmpFolder,'h')); +ok(5)=~isempty(strfind(Parallel_info.RemoteTmpFolder,'m')); +ok(6)=~isempty(strfind(Parallel_info.RemoteTmpFolder,'s')); +ok(7)=~isempty(PRCDir); + +if sum(ok)<7, + error('The name of the remote tmp folder does not comply the security standards!'), +end + for indPC=1:length(Parallel), + ok(1)=isempty(strfind(Parallel(indPC).RemoteDirectory,'..')); + if sum(ok)<7, + error('The remote folder path structure does not comply the security standards!'), + end while (1) if ~ispc - stat = system(['ssh ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,' rm -fr ',Parallel(indPC).RemoteDirectory,'/',PRCDir]); + [stat NonServe] = system(['ssh ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,' rm -fr ',Parallel(indPC).RemoteDirectory,'/',PRCDir]); break; else if exist('OCTAVE_VERSION'), % Patch for peculiar behaviour of rmdir under Windows.