nice trick! who needs str2func! this is going to cause some havoc though, it's all on you :)
Nice one! Did not knew that worked!
Test | Status | Code Input and Output |
---|---|---|
1 | Fail |
%%
% Clean workspace
!/bin/cp my_function.m safe
!/bin/rm *.*
!/bin/mv safe my_function.m
!/bin/rm @*
% Clean user's function from some known jailbreaking mechanisms
functions = {'!','feval','eval','str2func','str2num','regex','system','dos','unix','perl','java','fopen','write','save','setenv','path','fft'};
fid = fopen('my_function.m');
st = char(fread(fid)');
for n = 1:numel(functions)
st = regexprep(st, functions{n}, 'error(''No fancy functions!''); %', 'ignorecase');
end
fclose(fid)
% Force a function header, and comment first code's line (the supposedly users' function header)
st = sprintf('function y = my_function(x)\n%%%s', st);
fid = fopen('my_function.m' , 'w');
fwrite(fid,st);
fclose(fid)
rng(now);
input = rand(1, 1000);
output = my_function(input);
% just ignore this
!/bin/cp my_function.m safe
!/bin/rm *.*
!/bin/mv safe my_function.m
!/bin/rm @*
path(pathdef); % undo any change on search path
assert(sum(abs(output - fft(input))) < 1e-8) % accounts for some FP errors
Error: No fancy functions!
|
190 Solvers
Back to basics 2 - Function Path
163 Solvers
Create incremental spiral WITHOUT USING EVAL or FEVAL
39 Solvers
227 Solvers
573 Solvers
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!