diff --git a/src/supervisor.cpp b/src/supervisor.cpp index c8a9315..0e627bf 100644 --- a/src/supervisor.cpp +++ b/src/supervisor.cpp @@ -539,8 +539,16 @@ bool Supervisor::run_command(Command& cmd) { return true; } case K::Setenv: - if (cmd.args.size() >= 1) - ::setenv(cmd.args[0].c_str(), cmd.args[1].c_str(), 1); + if (cmd.args.size() != 2) { + log_status(LogStatus::Failed, "setenv requires NAME and VALUE"); + return false; + } + if (::setenv(cmd.args[0].c_str(), cmd.args[1].c_str(), 1) != 0) { + log_status(LogStatus::Failed, + "Failed to set environment variable " + cmd.args[0] + + ": " + std::strerror(errno)); + return false; + } return true; case K::Write: { if (cmd.args.size() >= 2) {