diff --git a/src/signal_handler.c b/src/signal_handler.c index a820340df0422ab0b00cada7d966dd3cf8698546..8ab1a2cc07d13af658f475a6ce6bcbae18f665e6 100644 --- a/src/signal_handler.c +++ b/src/signal_handler.c @@ -25,7 +25,7 @@ #include "main.h" #include <signal.h> -RCSID("$Id: signal_handler.c,v 1.162 2000/01/16 05:20:09 hubbe Exp $"); +RCSID("$Id: signal_handler.c,v 1.163 2000/01/27 15:58:19 grubba Exp $"); #ifdef HAVE_PASSWD_H # include <passwd.h> @@ -2525,6 +2525,9 @@ void f_create_process(INT32 args) buf[1]); break; case PROCE_DUP2: + if (buf[1] == EINVAL) { + error("Process.create_process(): dup2() failed with EINVAL.\n"); + } error("Process.create_process(): dup2() failed. errno:%d\n", buf[1]); break; @@ -2533,6 +2536,11 @@ void f_create_process(INT32 args) buf[2], buf[1]); break; case PROCE_SETGROUPS: + if (buf[1] == EINVAL) { + error("Process.create_process(): setgroups() failed with EINVAL.\n" + "Too many supplementary groups (%d)?\n", + storage.num_wanted_gids); + } error("Process.create_process(): setgroups() failed. errno:%d\n", buf[1]); break; @@ -2545,10 +2553,20 @@ void f_create_process(INT32 args) buf[1]); break; case PROCE_SETUID: + if (buf[1] == EINVAL) { + error("Process.create_process(): Invalid uid: %d.\n", + wanted_uid); + } error("Process.create_process(): setuid(%d) failed. errno:%d\n", buf[2], buf[1]); break; case PROCE_EXEC: + if (buf[1] == ENOENT) { + error("Process.create_process(): Executable file not found.\n"); + } + if (buf[1] == EACCESS) { + error("Process.create_process(): Access denied.\n"); + } error("Process.create_process(): exec() failed. errno:%d\n" "File not found?\n", buf[1]); break;