summaryrefslogtreecommitdiff
path: root/daemons
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2012-09-22 23:59:21 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2012-09-22 23:59:21 +0200
commit0931a9f15e7436346e33c66129f3ff822c33f52a (patch)
tree08a72115434dc3316b4d7237fa9e145d53cd10f5 /daemons
parent8da984cc1e47b2bb7ff6361a81b59593a51a3513 (diff)
Check that runsystem script exists before trying it.
* init/init.c (launch_something): Check with file_name_lookup that runsystem script exists before calling start_child. * daemons/console-run.c (main): Check with file_name_lookup that runsystem script exists before opening a console for it.
Diffstat (limited to 'daemons')
-rw-r--r--daemons/console-run.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/daemons/console-run.c b/daemons/console-run.c
index aaa1159b..fb879e53 100644
--- a/daemons/console-run.c
+++ b/daemons/console-run.c
@@ -49,6 +49,7 @@ int
main (int argc, char **argv)
{
mach_port_t consdev = get_console ();
+ mach_port_t runsystem;
char *consname;
if (consdev == MACH_PORT_NULL)
@@ -62,6 +63,12 @@ main (int argc, char **argv)
if (argc < 2)
error (1, 0, "Usage: %s PROGRAM [ARG...]", program_invocation_short_name);
+ /* Check whether runsystem exists before opening a console for it. */
+ runsystem = file_name_lookup (argv[1], O_RDONLY, 0);
+ if (runsystem == MACH_PORT_NULL)
+ error (127, errno, "cannot open file `%s' for execution", argv[1]);
+ mach_port_deallocate (mach_task_self (), runsystem);
+
if (open_console (&consname))
setenv ("FALLBACK_CONSOLE", consname, 1);