--- suX/src/sux.c 2011/05/20 16:38:53 1.1.1.1.2.3 +++ suX/src/sux.c 2011/05/20 17:10:52 1.1.1.1.2.6 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ - * $Id: sux.c,v 1.1.1.1.2.3 2011/05/20 16:38:53 misho Exp $ + * $Id: sux.c,v 1.1.1.1.2.6 2011/05/20 17:10:52 misho Exp $ * *************************************************************************/ #include "global.h" @@ -18,27 +18,31 @@ FILE *lf; static inline void Log(int lvl, const char *fmt, ...) { - va_list lst; + va_list lst, cp; if (lvl <= Verbose) { va_start(lst, fmt); + va_copy(cp, lst); vfprintf(lf, fmt, lst); - fprintf(lf, "\n"); - vsyslog(LOG_WARNING, fmt, lst); va_end(lst); + fprintf(lf, "\n"); + vsyslog(LOG_WARNING, fmt, cp); + va_end(cp); } } static inline void Err(const char *fmt, ...) { - va_list lst; + va_list lst, cp; va_start(lst, fmt); + va_copy(cp, lst); vfprintf(lf, fmt, lst); - fprintf(lf, "\n"); - vsyslog(LOG_ERR, fmt, lst); va_end(lst); + fprintf(lf, "\n"); + vsyslog(LOG_ERR, fmt, cp); + va_end(cp); } static void @@ -222,6 +226,7 @@ Run(char **argv) return -1; } + /* if (setgid(proc.proc_gid) == -1) { Err("Error:: setgid #%d - %s\n", errno, strerror(errno)); if (args) @@ -240,8 +245,9 @@ Run(char **argv) free(args); return -1; } + */ - Log(1, "UID:GID=%d:%d Prio=%d Class=%s Name=%s Dir=%s Cmd=%s\n", proc.proc_uid, proc.proc_gid, + Log(0, "UID:GID=%d:%d Prio=%d Class=%s Name=%s Dir=%s Cmd=%s", proc.proc_uid, proc.proc_gid, proc.proc_prio, proc.proc_class, proc.proc_name, proc.proc_dir, proc.proc_cmd); if (3 <= Verbose) { @@ -249,6 +255,8 @@ Run(char **argv) while (*++el) Log(3, "args: %s", *el); } + + fflush(lf); execve(cmd, args, environ); if (args)