static void noFiles(Dict* args, void* vcontext, String* txid) { struct Context* const ctx = (struct Context*) vcontext; struct Jmp jmp; Jmp_try(jmp) { Security_noFiles(&jmp.handler); } Jmp_catch { sendError(jmp.message, txid, ctx->admin); return; } sendError("none", txid, ctx->admin); }
static void security(List* config, struct Log* logger, struct ExceptionHandler* eh) { if (!config) { return; } bool nofiles = false; for (int i = 0; i < List_size(config); i++) { String* s = List_getString(config, i); if (s && String_equals(s, BSTR("nofiles"))) { nofiles = true; } } char* user = setUser(config); if (user) { Log_info1(logger, "Changing user to [%s]\n", user); Security_setUser(user, logger, eh); } if (nofiles) { Log_info(logger, "Setting max open files to zero.\n"); Security_noFiles(eh); } }