diff options
author | Neal H. Walfield <neal@gnu.org> | 2002-03-26 14:59:52 +0000 |
---|---|---|
committer | Neal H. Walfield <neal@gnu.org> | 2002-03-26 14:59:52 +0000 |
commit | 22702db6dab56e36c86d91fbf5f2f469fad99f2c (patch) | |
tree | 2e887617a1cac327c98cf9329bcf10e0ba1d2b9e /libdiskfs/file-exec.c | |
parent | 5c086e129802f8a5705a7b866b877c37cb88d29b (diff) |
2002-03-25 Neal H Walfield <neal@cs.uml.edu>
* peropen-make.c (diskfs_make_peropen): Instead of returning the
peropen, return as error_t and return the peropen in the new
parameter *PPO.
* diskfs.h (diskfs_make_peropen): Change declaration to reflect
new semantics.
* boot-start.c (diskfs_start_bootstrap): Check the return value of
diskfs_make_peropen using the new semantics.
(diskfs_S_exec_startup_get_info): Likewise.
(diskfs_execboot_fsys_startup): Likewise.
(diskfs_S_fsys_init): Likewise.
* dir-lookup.c (diskfs_S_dir_lookup): Likewise.
* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.
* file-exec.c (diskfs_S_file_exec): Likewise.
* file-reparent.c (diskfs_S_file_reparent): Likewise.
* fsys-getfile.c (diskfs_S_fsys_getfile): Likewise.
* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
* trans-callback.c (_diskfs_translator_callback2_fn): Likewise.
* init-startup.c (diskfs_startup_diskfs): Likewise.
Diffstat (limited to 'libdiskfs/file-exec.c')
-rw-r--r-- | libdiskfs/file-exec.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/libdiskfs/file-exec.c b/libdiskfs/file-exec.c index 9a4ca35f..2fd60415 100644 --- a/libdiskfs/file-exec.c +++ b/libdiskfs/file-exec.c @@ -1,5 +1,5 @@ /* File execution (file_exec RPC) for diskfs servers, using exec server. - Copyright (C) 1993,94,95,96,97,98,2000 Free Software Foundation, Inc. + Copyright (C) 1993,94,95,96,97,98,2000,02 Free Software Foundation, Inc. This file is part of the GNU Hurd. @@ -53,6 +53,7 @@ diskfs_S_file_exec (struct protid *cred, mode_t mode; int suid, sgid; struct protid *newpi; + struct peropen *newpo; error_t err = 0; mach_port_t execserver; int cached_exec; @@ -143,10 +144,15 @@ diskfs_S_file_exec (struct protid *cred, server can read the executable file. We also include O_EXEC so that the exec server can turn this peropen into a file descriptor in the target process and permit it to exec its /dev/fd/N pseudo-file. */ - err = diskfs_create_protid (diskfs_make_peropen (np, - O_READ|O_EXEC, - cred->po), - cred->user, &newpi); + { + err = diskfs_make_peropen (np, O_READ|O_EXEC, cred->po, &newpo); + if (! err) + { + err = diskfs_create_protid (newpo, cred->user, &newpi); + if (err) + diskfs_release_peropen (newpo); + } + } if (! err) { |