} else elevate = icpid->elevate;
} else { icpid = intercept_findpid(pid); if (icpid != NULL) elevate = icpid->elevate; else elevate = NULL; }
intercept_syscall(int fd, pid_t pid, u_int16_t seqnr, int policynr,    const char *name, int code, const char *emulation, void *args, int argsize){	short action, flags = 0;	struct intercept_syscall *sc;	struct intercept_pid *icpid;	struct elevate *elevate = NULL;	int error = 0;	action = ICPOLICY_PERMIT;	flags = 0;	icpid = intercept_getpid(pid);			/* Special handling for the exec call */	if (!strcmp(name, "execve")) {		void *addr;		char *argname;		icpid->execve_code = code;		icpid->policynr = policynr;		if (icpid->newname)			free(icpid->newname);		intercept.getarg(0, args, argsize, &addr);		argname = intercept_filename(fd, pid, addr, ICLINK_ALL);		if (argname == NULL)			err(1, "%s:%d: intercept_filename",			    __func__, __LINE__);		icpid->newname = strdup(argname);		if (icpid->newname == NULL)			err(1, "%s:%d: strdup", __func__, __LINE__);		/* We need to know the result from this system call */		flags = ICFLAGS_RESULT;	}	icpid->elevate = NULL;	sc = intercept_sccb_find(emulation, name);	if (sc != NULL) {		struct intercept_translate *tl;		ic_abort = 0;		TAILQ_FOREACH(tl, &sc->tls, next) {			if (intercept_translate(tl, fd, pid, tl->off,				args, argsize) == -1)				break;		}		if (!ic_abort)			action = (*sc->cb)(fd, pid, policynr, name, code,			    emulation, args, argsize, &sc->tls, sc->cb_arg);		else			action = ICPOLICY_NEVER;	} else if (intercept_gencb != NULL)		action = (*intercept_gencb)(fd, pid, policynr, name, code,		    emulation, args, argsize, intercept_gencbarg);	if (action > 0) {		error = action;		action = ICPOLICY_NEVER;	} else		elevate = icpid->elevate;	/* Resume execution of the process */	intercept.answer(fd, pid, seqnr, action, error, flags, elevate);}