From ca75348e2e011b52b3eb13f9e71f449db8c45410 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Thu, 27 Jan 2000 16:58:19 +0100
Subject: [PATCH] Improved error-messages for some common cases in
 create_process().

Rev: src/signal_handler.c:1.163
---
 src/signal_handler.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/signal_handler.c b/src/signal_handler.c
index a820340df0..8ab1a2cc07 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;
-- 
GitLab