Specify environment variables to contract binary (#355)

This commit is contained in:
Chalith Desaman
2022-01-11 13:41:33 +05:30
committed by GitHub
parent 2d4cebb37e
commit 150df0eabb
5 changed files with 27 additions and 5 deletions

View File

@@ -210,6 +210,12 @@ namespace sc
execv_args[j] = conf::cfg.contract.runtime_binexec_args[i].data();
execv_args[len - 1] = NULL;
len = conf::cfg.contract.runtime_env_args.size() + 1;
char *env_args[len];
for (int i = 0; i < conf::cfg.contract.runtime_env_args.size(); i++)
env_args[i] = conf::cfg.contract.runtime_env_args[i].data();
env_args[len - 1] = NULL;
if (chdir(ctx.working_dir.c_str()) == -1)
{
std::cerr << errno << ": Contract process chdir failed." << (ctx.args.readonly ? " (rdonly)" : "") << "\n";
@@ -224,8 +230,8 @@ namespace sc
exit(1);
}
execv(execv_args[0], execv_args);
std::cerr << errno << ": Contract process execv failed." << (ctx.args.readonly ? " (rdonly)" : "") << "\n";
execve(execv_args[0], execv_args, env_args);
std::cerr << errno << ": Contract process execve failed." << (ctx.args.readonly ? " (rdonly)" : "") << "\n";
exit(1);
}
else