diff options
Diffstat (limited to 'executor')
| -rw-r--r-- | executor/executor_runner.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/executor/executor_runner.h b/executor/executor_runner.h index 55a6c422c..385b111c8 100644 --- a/executor/executor_runner.h +++ b/executor/executor_runner.h @@ -765,11 +765,23 @@ static void SigsegvHandler(int sig, siginfo_t* info, void* ucontext) static void runner(char** argv, int argc) { - if (argc != 5) - fail("usage: syz-executor runner <name> <manager-addr> <manager-port>"); + const char* const usage_msg = "usage: syz-executor runner <name> <manager-addr> " + "<manager-port> OR syz-executor runner <name> stdin"; + if (argc < 4 || argc > 5) + fail(usage_msg); + const char* const name = argv[2]; const char* const manager_addr = argv[3]; - const char* const manager_port = argv[4]; + const char* manager_port = NULL; + + if (strcmp(manager_addr, "stdin") == 0) { + // Do not expect a port number for stdin. + if (argc == 5) + fail(usage_msg); + } else if (argc != 5) + fail(usage_msg); + else + manager_port = argv[4]; struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = kFdLimit; |
