aboutsummaryrefslogtreecommitdiff
path: root/exec/exec.c
Commit message (Collapse)AuthorAgeFilesLines
* Replace `bzero' with `memset'Justus Winter2014-12-101-11/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For reference, this patch was created using the following semantic patch, and then manually applying the change in all functions containing nested functions, as those are not supported by Coccinelle. @@ expression A, B; @@ - bzero (A, B) + memset (A, 0, B) * auth/auth.c: Replace `bzero' with `memset'. * boot/boot.c: Likewise. * defpager/defpager.c: Likewise. * exec/exec.c: Likewise. Also, drop `safe_bzero' and just use `hurd_safe_memset' directly. * ext2fs/ext2fs.c: Likewise. * ext2fs/getblk.c: Likewise. * ext2fs/pager.c: Likewise. * fatfs/pager.c: Likewise. * ftpfs/dir.c: Likewise. * ftpfs/netfs.c: Likewise. * isofs/inode.c: Likewise. * isofs/pager.c: Likewise. * libdiskfs/file-getfh.c: Likewise. * libdiskfs/file-statfs.c: Likewise. * libfshelp/fetch-root.c: Likewise. * libfshelp/start-translator.c: Likewise. * libftpconn/create.c: Likewise. * libftpconn/open.c: Likewise. * libftpconn/unix.c: Likewise. * libpipe/pipe.c: Likewise. * libps/procstat.c: Likewise. * libps/spec.c: Likewise. * libshouldbeinlibc/cacheq.c: Likewise. * libshouldbeinlibc/idvec.c: Likewise. * libshouldbeinlibc/ugids.c: Likewise. * libstore/argp.c: Likewise. * libstore/enc.c: Likewise. * libstore/kids.c: Likewise. * libthreads/alpha/thread.c: Likewise. * libtreefs/fsys.c: Likewise. * libtrivfs/file-statfs.c: Likewise. * mach-defpager/default_pager.c: Likewise. * pfinet/glue-include/asm/uaccess.h: Likewise. * pfinet/io-ops.c: Likewise. * pfinet/options.c: Likewise. * pfinet/socket.c: Likewise. * pfinet/timer-emul.c: Likewise. * pflocal/io.c: Likewise. * startup/startup.c: Likewise. * storeio/storeio.c: Likewise. * sutils/fstab.c: Likewise. * usermux/usermux.c: Likewise. * utils/fakeauth.c: Likewise. * utils/frobauth.c: Likewise. * utils/login.c: Likewise. * utils/x.c: Likewise.
* exec: redzone page zero before loading anythingJustus Winter2014-09-291-0/+10
| | | | | | This prevents load_section from mapping any sections to page zero. * exec/exec.c (do_exec): Redzone page zero before loading anything.
* exec: add missing includesJustus Winter2014-05-261-0/+1
| | | | | * exec/exec.c: Include mach/gnumach.h. * exec/main.c: Include device/device.h.
* exec: abbreviate the task name if necessaryJustus Winter2014-04-291-2/+13
| | | | | * exec/exec.c (do_exec): If the formatted task name exceeds TASK_NAME_SIZE, abbreviate it.
* exec: fix receiver lookupJustus Winter2014-04-051-4/+1
| | | | | | | | * exec/Makefile (exec_startup-MIGSFLAGS): New variable. * exec/execmutations.h: Add mutators for exec_startup_t. * exec/mig-decls.h: New file. * exec/priv.h (bootinfo_t): New type declaration to appease mig. * exec/exec.c (S_exec_startup_get_info): Fix receiver lookup.
* exec: provide a meaningful name for new tasksJustus Winter2014-02-231-6/+21
| | | | | | | The name will be used in error messages printed by the kernel. This makes attributing the errors to processes possible. * exec/exec.c (do_exec): Set the name of the new task.
* exec: remove support for transparently ungziping executablesJustus Winter2013-09-151-138/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove support for transparently ungziping executables from the exec server. The code in question makes the exec server unnecessarily complex and since the exec server is an essential process, crashing it makes /hurd/init crash the whole system. Since the gzip code is not thread-safe, all access to it is serialized, so there is a trivial way for one user to delay another users gzipped executables for some unspecified time. This can be accomplished by padding any program with easily compressed data, zipping it and executing it. Using such a program as an passive translator and then triggering its execution by the filesystem translator also stalls any requests to that filesystem (observed using the libdiskfs-based ext2fs). Since compressed executables cannot be mapped into the memory, they have to be uncompressed into allocated memory first. This is slower and any user with access to the exec server can make it allocate arbitrary amounts of memory. If the Hurd had proper memory accounting, this would probably be a way around it. So the compression support in exec seemingly creates various issues for little value, at least with the abundance of nonvolatile memory available today. * exec/Makefile: Remove gzip related files. * exec/exec.c: Remove anything #ifdef GZIPped. * exec/unzip.c: Move to libstore. * exec/crypt.h: Likewise. * exec/gzip.h: Likewise. * exec/inflate.c: Likewise. * exec/tailor.h: Likewise. * exec/util.c: Likewise. * libstore/Makefile: Remove the vpath magic for looking up the zip stuff.
* exec: remove support for transparently unbzip2ing executablesJustus Winter2013-09-151-124/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove support for transparently unbzip2ing executables from the exec server. The code in question makes the exec server unnecessarily complex and since the exec server is an essential process, crashing it makes /hurd/init crash the whole system. Since the bzip2 code is not thread-safe, all access to it is serialized, so there is a trivial way for one user to delay another users bzip2ed executables for some unspecified time. This can be accomplished by padding any program with easily compressed data, zipping it and executing it. Using such a program as an passive translator and then triggering its execution by the filesystem translator also stalls any requests to that filesystem (observed using the libdiskfs-based ext2fs). Since compressed executables cannot be mapped into the memory, they have to be uncompressed into allocated memory first. This is slower and any user with access to the exec server can make it allocate arbitrary amounts of memory. If the Hurd had proper memory accounting, this would probably be a way around it. So the compression support in exec seemingly creates various issues for little value, at least with the abundance of nonvolatile memory available today. * exec/Makefile: Remove bzip2 related files. * exec/exec.c: Remove anything #ifdef BZIP2ed. * exec/do-bunzip2.c: Move to libstore.
* exec: keep track of the range where executable segments are mappedJustus Winter2013-09-151-0/+23
| | | | | | | | | | Keep track of the range where executable segments are mapped into memory and hand that information over to the proc server. * exec/priv.h (struct execdata): Add {start,end}_code. * exec/exec.c (prepare): Initialize {start,end}_code. (load_section): Update {start,end}_code. (do_exec): Use proc_set_code to hand {start,end}_code to the proc server.
* exec: remove the BFD codeJustus Winter2013-08-291-512/+55
| | | | | | | | | | | | | | | This commit removes the parts of the exec server that were once using the Binary File Descriptor library. As I understand it, the BFD code stopped working because it uses stdio streams and the glue code for that has never been ported to libio. The code has been #ifdefed out ever since. It may or may not work in its current state, so it is removed. If someone is interested, it can always be recovered from the version control system. * exec/exec.c: Remove all BFD related code. * exec/priv.h: Likewise. * TODO: Remove the corresponding item.
* exec: Remove #ifdef 0-out code for user specified exec servers.Justus Winter2013-08-281-81/+0
| | | | | | | | | This code was meant to allow the user to specify alternative exec servers using an environment variable. The Hurd uses the file system as namespace for server lookups, so the proper way to use one's own exec server seems to be the remap translator. * exec/exec.c (S_exec_exec): Remove unused code.
* Remove unused variableMiguel Figueiredo2013-06-011-3/+0
| | | | * exec/exec.c (check_section): Remove unused variable.
* Switch from cthreads to pthreadsRichard Braun2012-11-271-18/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makefiles, headers, types, macros and function calls are renamed where appropriate. Most of this work was done by Barry deFreese and Thomas DiModica. * auth/Makefile: Switch from cthreads to pthreads. * auth/auth.c: Likewise. * boot/Makefile: Likewise. * boot/boot.c: Likewise. * boot/ux.c: Likewise. * console-client/Makefile: Likewise. * console-client/console.c: Likewise. * console-client/driver.c: Likewise. * console-client/driver.h: Likewise. * console-client/generic-speaker.c: Likewise. * console-client/kbd-repeat.c: Likewise. * console-client/ncursesw.c: Likewise. * console-client/pc-kbd.c: Likewise. * console-client/pc-mouse.c: Likewise. * console-client/timer.c: Likewise. * console-client/trans.c: Likewise. * console-client/vga.c: Likewise. * console/Makefile: Likewise. * console/console.c: Likewise. * console/display.c: Likewise. * console/input.c: Likewise. * console/pager.c: Likewise. * defpager/backing.c: Likewise. * exec/Makefile: Likewise. * exec/exec.c: Likewise. * exec/hashexec.c: Likewise. * exec/priv.h: Likewise. * ext2fs/Makefile: Likewise. * ext2fs/balloc.c: Likewise. * ext2fs/dir.c: Likewise. * ext2fs/ext2fs.c: Likewise. * ext2fs/ext2fs.h: Likewise. * ext2fs/ialloc.c: Likewise. * ext2fs/inode.c: Likewise. * ext2fs/msg.c: Likewise. * ext2fs/pager.c: Likewise. * ext2fs/pokel.c: Likewise. * ext2fs/storeinfo.c: Likewise. * ext2fs/truncate.c: Likewise. * fatfs/Makefile: Likewise. * fatfs/dir.c: Likewise. * fatfs/fat.c: Likewise. * fatfs/fatfs.h: Likewise. * fatfs/inode.c: Likewise. * fatfs/main.c: Likewise. * fatfs/pager.c: Likewise. * fatfs/virt-inode.c: Likewise. * ftpfs/Makefile: Likewise. * ftpfs/ccache.c: Likewise. * ftpfs/ccache.h: Likewise. * ftpfs/conn.c: Likewise. * ftpfs/dir.c: Likewise. * ftpfs/fs.c: Likewise. * ftpfs/ftpfs.c: Likewise. * ftpfs/ftpfs.h: Likewise. * ftpfs/ncache.c: Likewise. * ftpfs/netfs.c: Likewise. * ftpfs/node.c: Likewise. * hostmux/Makefile: Likewise. * hostmux/hostmux.h: Likewise. * hostmux/mux.c: Likewise. * hostmux/node.c: Likewise. * hostmux/stubs.c: Likewise. * hurd/shared.h: Likewise. * isofs/Makefile: Likewise. * isofs/inode.c: Likewise. * isofs/lookup.c: Likewise. * isofs/main.c: Likewise. * isofs/pager.c: Likewise. * libcons/Makefile: Likewise. * libcons/cons-switch.c: Likewise. * libcons/cons.h: Likewise. * libcons/dir-changed.c: Likewise. * libcons/file-changed.c: Likewise. * libcons/init-init.c: Likewise. * libcons/vcons-close.c: Likewise. * libcons/vcons-input.c: Likewise. * libcons/vcons-move-mouse.c: Likewise. * libcons/vcons-open.c: Likewise. * libcons/vcons-scrollback.c: Likewise. * libdiskfs/Makefile: Likewise. * libdiskfs/boot-start.c: Likewise. * libdiskfs/dead-name.c: Likewise. * libdiskfs/dir-chg.c: Likewise. * libdiskfs/dir-link.c: Likewise. * libdiskfs/dir-lookup.c: Likewise. * libdiskfs/dir-mkdir.c: Likewise. * libdiskfs/dir-mkfile.c: Likewise. * libdiskfs/dir-readdir.c: Likewise. * libdiskfs/dir-rename.c: Likewise. * libdiskfs/dir-renamed.c: Likewise. * libdiskfs/dir-rmdir.c: Likewise. * libdiskfs/dir-unlink.c: Likewise. * libdiskfs/disk-pager.c: Likewise. * libdiskfs/diskfs-pager.h: Likewise. * libdiskfs/diskfs.h: Likewise. * libdiskfs/file-access.c: Likewise. * libdiskfs/file-chg.c: Likewise. * libdiskfs/file-exec.c: Likewise. * libdiskfs/file-get-fs-opts.c: Likewise. * libdiskfs/file-get-trans.c: Likewise. * libdiskfs/file-get-transcntl.c: Likewise. * libdiskfs/file-getcontrol.c: Likewise. * libdiskfs/file-getfh.c: Likewise. * libdiskfs/file-lock-stat.c: Likewise. * libdiskfs/file-lock.c: Likewise. * libdiskfs/file-reparent.c: Likewise. * libdiskfs/file-set-trans.c: Likewise. * libdiskfs/file-sync.c: Likewise. * libdiskfs/file-syncfs.c: Likewise. * libdiskfs/fsys-getroot.c: Likewise. * libdiskfs/fsys-options.c: Likewise. * libdiskfs/fsys-syncfs.c: Likewise. * libdiskfs/ifsock.c: Likewise. * libdiskfs/init-first.c: Likewise. * libdiskfs/init-init.c: Likewise. * libdiskfs/init-startup.c: Likewise. * libdiskfs/io-duplicate.c: Likewise. * libdiskfs/io-get-conch.c: Likewise. * libdiskfs/io-identity.c: Likewise. * libdiskfs/io-map-cntl.c: Likewise. * libdiskfs/io-map.c: Likewise. * libdiskfs/io-modes-get.c: Likewise. * libdiskfs/io-modes-off.c: Likewise. * libdiskfs/io-modes-on.c: Likewise. * libdiskfs/io-modes-set.c: Likewise. * libdiskfs/io-owner-get.c: Likewise. * libdiskfs/io-owner-mod.c: Likewise. * libdiskfs/io-prenotify.c: Likewise. * libdiskfs/io-read.c: Likewise. * libdiskfs/io-readable.c: Likewise. * libdiskfs/io-reauthenticate.c: Likewise. * libdiskfs/io-rel-conch.c: Likewise. * libdiskfs/io-restrict-auth.c: Likewise. * libdiskfs/io-revoke.c: Likewise. * libdiskfs/io-seek.c: Likewise. * libdiskfs/io-sigio.c: Likewise. * libdiskfs/io-stat.c: Likewise. * libdiskfs/io-write.c: Likewise. * libdiskfs/lookup.c: Likewise. * libdiskfs/name-cache.c: Likewise. * libdiskfs/node-drop.c: Likewise. * libdiskfs/node-make.c: Likewise. * libdiskfs/node-nput.c: Likewise. * libdiskfs/node-nputl.c: Likewise. * libdiskfs/node-nref.c: Likewise. * libdiskfs/node-nrefl.c: Likewise. * libdiskfs/node-nrele.c: Likewise. * libdiskfs/node-nrelel.c: Likewise. * libdiskfs/peropen-rele.c: Likewise. * libdiskfs/priv.h: Likewise. * libdiskfs/shutdown.c: Likewise. * libdiskfs/sync-interval.c: Likewise. * libfshelp/Makefile: Likewise. * libfshelp/fetch-root.c: Likewise. * libfshelp/fshelp.h: Likewise. * libfshelp/get-identity.c: Likewise. * libfshelp/lock-acquire.c: Likewise. * libfshelp/lock-init.c: Likewise. * libfshelp/locks.h: Likewise. * libfshelp/set-active.c: Likewise. * libfshelp/trans.h: Likewise. * libfshelp/transbox-init.c: Likewise. * libiohelp/Makefile: Likewise. * libiohelp/get_conch.c: Likewise. * libiohelp/handle_io_release_conch.c: Likewise. * libiohelp/initialize_conch.c: Likewise. * libiohelp/iohelp.h: Likewise. * libiohelp/verify_user_conch.c: Likewise. * libnetfs/Makefile: Likewise. * libnetfs/dir-lookup.c: Likewise. * libnetfs/dir-mkdir.c: Likewise. * libnetfs/dir-mkfile.c: Likewise. * libnetfs/dir-readdir.c: Likewise. * libnetfs/dir-rmdir.c: Likewise. * libnetfs/dir-unlink.c: Likewise. * libnetfs/drop-node.c: Likewise. * libnetfs/file-chauthor.c: Likewise. * libnetfs/file-check-access.c: Likewise. * libnetfs/file-chflags.c: Likewise. * libnetfs/file-chmod.c: Likewise. * libnetfs/file-chown.c: Likewise. * libnetfs/file-exec.c: Likewise. * libnetfs/file-get-storage-info.c: Likewise. * libnetfs/file-get-translator.c: Likewise. * libnetfs/file-lock-stat.c: Likewise. * libnetfs/file-lock.c: Likewise. * libnetfs/file-reparent.c: Likewise. * libnetfs/file-set-size.c: Likewise. * libnetfs/file-set-translator.c: Likewise. * libnetfs/file-statfs.c: Likewise. * libnetfs/file-sync.c: Likewise. * libnetfs/file-syncfs.c: Likewise. * libnetfs/file-utimes.c: Likewise. * libnetfs/fsys-getroot.c: Likewise. * libnetfs/fsys-set-options.c: Likewise. * libnetfs/init-init.c: Likewise. * libnetfs/io-clear-some-openmodes.c: Likewise. * libnetfs/io-duplicate.c: Likewise. * libnetfs/io-get-openmodes.c: Likewise. * libnetfs/io-get-owner.c: Likewise. * libnetfs/io-identity.c: Likewise. * libnetfs/io-mod-owner.c: Likewise. * libnetfs/io-read.c: Likewise. * libnetfs/io-readable.c: Likewise. * libnetfs/io-reauthenticate.c: Likewise. * libnetfs/io-restrict-auth.c: Likewise. * libnetfs/io-revoke.c: Likewise. * libnetfs/io-seek.c: Likewise. * libnetfs/io-set-all-openmodes.c: Likewise. * libnetfs/io-set-some-openmodes.c: Likewise. * libnetfs/io-stat.c: Likewise. * libnetfs/io-write.c: Likewise. * libnetfs/make-node.c: Likewise. * libnetfs/netfs.h: Likewise. * libnetfs/nput.c: Likewise. * libnetfs/nref.c: Likewise. * libnetfs/nrele.c: Likewise. * libnetfs/release-peropen.c: Likewise. * libnetfs/shutdown.c: Likewise. * libpager/Makefile: Likewise. * libpager/chg-compl.c: Likewise. * libpager/clean.c: Likewise. * libpager/data-request.c: Likewise. * libpager/data-return.c: Likewise. * libpager/data-unlock.c: Likewise. * libpager/inhibit-term.c: Likewise. * libpager/lock-completed.c: Likewise. * libpager/lock-object.c: Likewise. * libpager/mark-error.c: Likewise. * libpager/no-senders.c: Likewise. * libpager/object-init.c: Likewise. * libpager/object-terminate.c: Likewise. * libpager/offer-page.c: Likewise. * libpager/pager-attr.c: Likewise. * libpager/pager-create.c: Likewise. * libpager/pager-shutdown.c: Likewise. * libpager/priv.h: Likewise. * libpager/seqnos.c: Likewise. * libpipe/Makefile: Likewise. * libpipe/pipe.c: Likewise. * libpipe/pipe.h: Likewise. * libports/Makefile: Likewise. * libports/begin-rpc.c: Likewise. * libports/bucket-iterate.c: Likewise. * libports/claim-right.c: Likewise. * libports/class-iterate.c: Likewise. * libports/complete-deallocate.c: Likewise. * libports/count-bucket.c: Likewise. * libports/count-class.c: Likewise. * libports/create-bucket.c: Likewise. * libports/create-internal.c: Likewise. * libports/destroy-right.c: Likewise. * libports/enable-bucket.c: Likewise. * libports/enable-class.c: Likewise. * libports/end-rpc.c: Likewise. * libports/get-right.c: Likewise. * libports/import-port.c: Likewise. * libports/inhibit-all-rpcs.c: Likewise. * libports/inhibit-bucket-rpcs.c: Likewise. * libports/inhibit-class-rpcs.c: Likewise. * libports/inhibit-port-rpcs.c: Likewise. * libports/init.c: Likewise. * libports/interrupt-notified-rpcs.c: Likewise. * libports/interrupt-on-notify.c: Likewise. * libports/interrupt-operation.c: Likewise. * libports/interrupt-rpcs.c: Likewise. * libports/interrupted.c: Likewise. * libports/lookup-port.c: Likewise. * libports/manage-multithread.c: Likewise. * libports/no-senders.c: Likewise. * libports/port-deref-weak.c: Likewise. * libports/port-deref.c: Likewise. * libports/port-ref-weak.c: Likewise. * libports/port-ref.c: Likewise. * libports/ports.h: Likewise. * libports/reallocate-from-external.c: Likewise. * libports/reallocate-port.c: Likewise. * libports/resume-all-rpcs.c: Likewise. * libports/resume-bucket-rpcs.c: Likewise. * libports/resume-class-rpcs.c: Likewise. * libports/resume-port-rpcs.c: Likewise. * libports/stubs.c: Likewise. * libports/transfer-right.c: Likewise. * libstore/Makefile: Likewise. * libstore/gunzip.c: Likewise. * libstore/part.c: Likewise. * libstore/unzipstore.c: Likewise. * libthreads/Makefile: Likewise. * libtreefs/dir-lookup.c: Likewise. * libtreefs/fsys-getroot.c: Likewise. * libtreefs/fsys-hooks.c: Likewise. * libtreefs/fsys.c: Likewise. * libtreefs/trans-help.c: Likewise. * libtreefs/trans-start.c: Likewise. * libtreefs/treefs.h: Likewise. * libtrivfs/cntl-create.c: Likewise. * libtrivfs/dyn-classes.c: Likewise. * libtrivfs/io-reauthenticate.c: Likewise. * libtrivfs/io-restrict-auth.c: Likewise. * libtrivfs/protid-clean.c: Likewise. * libtrivfs/protid-dup.c: Likewise. * libtrivfs/trivfs.h: Likewise. * mach-defpager/Makefile: Likewise. * mach-defpager/default_pager.c: Likewise. * mach-defpager/kalloc.c: Likewise. * mach-defpager/main.c: Likewise. * nfs/Makefile: Likewise. * nfs/cache.c: Likewise. * nfs/main.c: Likewise. * nfs/mount.c: Likewise. * nfs/name-cache.c: Likewise. * nfs/nfs.h: Likewise. * nfs/ops.c: Likewise. * nfs/rpc.c: Likewise. * nfsd/Makefile: Likewise. * nfsd/cache.c: Likewise. * nfsd/loop.c: Likewise. * nfsd/main.c: Likewise. * nfsd/nfsd.h: Likewise. * pfinet/Makefile: Likewise. * pfinet/ethernet.c: Likewise. * pfinet/glue-include/asm/spinlock.h: Likewise. * pfinet/glue-include/linux/interrupt.h: Likewise. * pfinet/glue-include/linux/sched.h: Likewise. * pfinet/glue-include/linux/timer.h: Likewise. * pfinet/glue-include/linux/wait.h: Likewise. * pfinet/iioctl-ops.c: Likewise. * pfinet/io-ops.c: Likewise. * pfinet/kmem_cache.c: Likewise. * pfinet/main.c: Likewise. * pfinet/options.c: Likewise. * pfinet/pfinet-ops.c: Likewise. * pfinet/pfinet.h: Likewise. * pfinet/sched.c: Likewise. * pfinet/socket-ops.c: Likewise. * pfinet/socket.c: Likewise. * pfinet/timer-emul.c: Likewise. * pfinet/tunnel.c: Likewise. * pflocal/Makefile: Likewise. * pflocal/connq.c: Likewise. * pflocal/io.c: Likewise. * pflocal/sock.c: Likewise. * pflocal/sock.h: Likewise. * pflocal/socket.c: Likewise. * pflocal/sserver.c: Likewise. * proc/Makefile: Likewise. * proc/info.c: Likewise. * proc/main.c: Likewise. * proc/mgt.c: Likewise. * proc/msg.c: Likewise. * proc/proc.h: Likewise. * proc/stubs.c: Likewise. * proc/wait.c: Likewise. * storeio/Makefile: Likewise. * storeio/dev.c: Likewise. * storeio/dev.h: Likewise. * storeio/open.c: Likewise. * storeio/open.h: Likewise. * storeio/pager.c: Likewise. * storeio/storeio.c: Likewise. * term/Makefile: Likewise. * term/devio.c: Likewise. * term/hurdio.c: Likewise. * term/main.c: Likewise. * term/munge.c: Likewise. * term/ptyio.c: Likewise. * term/term.h: Likewise. * term/users.c: Likewise. * tmpfs/Makefile: Likewise. * tmpfs/dir.c: Likewise. * tmpfs/node.c: Likewise. * tmpfs/tmpfs.c: Likewise. * tmpfs/tmpfs.h: Likewise. * trans/Makefile: Likewise. * trans/fakeroot.c: Likewise. * trans/fifo.c: Likewise. * trans/hello-mt.c: Likewise. * trans/new-fifo.c: Likewise. * trans/streamio.c: Likewise. * ufs/Makefile: Likewise. * ufs/alloc.c: Likewise. * ufs/dir.c: Likewise. * ufs/hyper.c: Likewise. * ufs/inode.c: Likewise. * ufs/main.c: Likewise. * ufs/pager.c: Likewise. * ufs/pokeloc.c: Likewise. * ufs/sizes.c: Likewise. * ufs/ufs.h: Likewise. * usermux/Makefile: Likewise. * usermux/mux.c: Likewise. * usermux/node.c: Likewise. * usermux/usermux.h: Likewise. * utils/Makefile: Likewise. * utils/fakeauth.c: Likewise. * utils/rpctrace.c: Likewise.
* fix common misspellingsJonathan Neuschäfer2011-08-201-1/+1
| | | | | | * Fix spelling with codespell[1] and manually review it. [1] http://git.profusion.mobi/cgit.cgi/lucas/codespell/
* Add comment about finish being called several timesSamuel Thibault2011-02-141-1/+3
|
* Protect exec from memory faultsSamuel Thibault2010-09-141-6/+16
| | | | | | | * exec/exec.c (load_section): Call i`hurd_safe_copyin' instead of `memcpy'. Handle error case. (check_gzip): Likewise. (check_bzip2): Likewise.
* Fix compressed binaries executionSamuel Thibault2010-09-141-4/+6
| | | | | | | | * exec/exec.c (check_gzip.zipread): Add `n' to `zipread_pos' to fix infinite loop. (check_bzip2.zipread): Likewise. (check_gzip): Set `file_data' and `file_size' fields after calling `finish' instead of before. (check_bzip2): Likewise.
* Fix in-memory mappingSamuel Thibault2010-09-141-2/+7
| | | | | | * exec/exec.c (map): When e->file_data is not NULL, return it plus `posn'. (prepare_in_memory): Call prepare_stream to clear stream positions.
* Fix duplicate oldtask port deallocationSamuel Thibault2009-12-211-2/+0
| | | | | | * exec/exec.c (do_exec): Do not deallocate oldtask when newtask != oldtask before the `out:' label since it is done again after it.
* Fixes long-standing random hang of exec.Samuel Thibault2009-08-231-2/+5
| | | | | * exec.c (finish): Set FILE_DATA and MAP_BUFFER members of E to NULL after freeing them.
* 2009-04-03 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault2009-04-021-3/+3
| | | | | * exec.c (prepare): Call PREPARE_STREAM earlier to permit calling finish_mapping on E even after errors, as is already done in do_exec.
* (check_elf_phdr): Fix typo in last change.Roland McGrath2004-10-231-1/+1
|
* 2004-10-22 Roland McGrath <roland@frob.com>Roland McGrath2004-10-221-8/+25
| | | | | | | * exec.c (check_elf_phdr): Return early on setting ENOEXEC. Only touch E->info.elf.phdr_addr once, on the PT_LOAD segment that actually contains the e_phoff location in the file. (do_exec): If E.info.elf.phdr_addr is zero, don't set BOOT->phdr_size.
* (check_elf_phdr): Tweak last change.Roland McGrath2004-09-261-0/+2
|
* 2004-09-26 Roland McGrath <roland@frob.com>Roland McGrath2004-09-261-17/+9
| | | | | | | | * priv.h (struct execdata.info.elf): New field `phdr_addr'. * exec.c (check_elf): Set E->info.elf.phdr_addr here from e_phoff. (check_elf_phdr): Don't check for PT_PHDR, remove last two args. (do_exec): Update callers. Set BOOT->phdr_addr and BOOT->phdr_size using info saved by check_elf.
* 2004-02-11 Roland McGrath <roland@frob.com>Roland McGrath2004-02-111-21/+27
| | | | | | * exec.c (servercopy): Change signature to avoid casted arguments. Update callers. (do_exec, S_exec_setexecdata): Update callers.
* 2004-01-15 Roland McGrath <roland@frob.com>Roland McGrath2004-02-101-1/+21
| | | | | | | * priv.h (struct execdata.info.elf): Add `execstack' flag. * exec.c (check_elf_phdr): Set it according to PT_GNU_STACK's PF_X flag bit. If no PT_GNU_STACK, default to set. (do_exec): If flag is clear, remove execute permission from stack.
* (prepare): fix last changeRoland McGrath2002-05-111-4/+1
|
* 2002-05-10 Roland McGrath <roland@frob.com>Roland McGrath2002-05-101-11/+12
| | | | | * exec.c (prepare): Do io_stat when io_map fails as for when io_map_cntl fails.
* 2002-04-27 Roland McGrath <roland@frob.com>Roland McGrath2002-04-271-14/+14
| | | | | | * priv.h: Include <link.h> to get ElfW macro. * priv.h, exec.c, main.c, hostarch.c: Use `ElfW(TYPE)' in place of `Elf32_TYPE' throughout.
* 2002-01-02 Roland McGrath <roland@frob.com>Roland McGrath2002-01-021-1/+5
| | | | | * exec.c (do_exec) [KERN_INVALID_LEDGER]: Pass extra arguments to task_create for OSF variant.
* 2001-12-31 Roland McGrath <roland@frob.com>Roland McGrath2002-01-011-1/+1
| | | | * exec.c (do_exec): thread_array_t -> thread_t *
* 2001-06-15 Roland McGrath <roland@frob.com>Roland McGrath2001-06-161-1/+3
| | | | * exec.c (do_exec: user_fd): Add a user ref to returned port.
* 2000-10-01 Roland McGrath <roland@frob.com>Roland McGrath2000-10-011-10/+22
| | | | | | | | * exec.c: Comments. 2000-09-24 Roland McGrath <roland@frob.com> * exec.c (map): Bail if the requested position + data size does not fit in the file size.
* 2000-03-23 Mark Kettenis <kettenis@gnu.org>Mark Kettenis2000-03-261-2/+1
| | | | | * exec.c (do_exec): Set interp.file to MACH_PORT_NULL before the first `goto out'.
* 2000-03-17 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell2000-03-171-0/+1
| | | | * main.c (S_exec_init): Don't use MOVE_SEND in Hurd RPC.
* 2000-03-17 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath2000-03-171-3/+1
| | | | * exec.c (do_exec): Use ports_get_send_right.
* 2000-03-13 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath2000-03-131-1/+10
| | | | | * exec.c [! EXECDATA_STREAM] (prepare_stream): Replace no-op with real function to initialize map_* members to zero.
* 2000-03-13 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath2000-03-131-31/+137
| | | | | | | | | | | | | | | | | | | * priv.h (EXECDATA_STREAM): New macro, always defined for now. (struct execdata) [! EXECDATA_STREAM]: Add members map_buffer, map_bsize, map_fsize, map_filepos in place of stream. (map_buffer, map_filepos, map_set_fsize): New macros for accessing those or stream. [! EXECDATA_STREAM] (map_fsize, map_vsize): Define using new members. * exec.c (map): Rewritten purely using those accessor macros. (input_room): Set the __target, __bufp, __error, and __eof members, which are no longer set by map. [! EXECDATA_STREAM] (prepare_stream, prepare_in_memory): Make no-ops. (input_room, close_exec_stream, fake_seek, prepare_stream, prepare_in_memory): Conditionalize these defns on [EXECDATA_STREAM]. (load_section): Always use map instead of stdio. Replace bcopy with memcpy. (check_gzip: zipread): Rewrite using map instead of stdio. (check_bzip2: zipread): Likewise.
* 2000-03-13 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath2000-03-131-8/+29
| | | | | | | | | | | | | | * exec.c (map): Made global. * priv.h: Declare it. (map_fsize, map_vsize): New macros for accessing state set up by map. * hashexec.c (check_hashbang): Use map and copying operations rather than stdio to extract the first line from the file. Move finish call to immediately after reading the line. * exec.c (map): If E->file_data is set, diagnose EOF before going to direct io_read. (prepare_in_memory): New function, broken out of check_gzip before last change. (check_gzip, check_bzip2): Use it.
* 2000-03-13 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath2000-03-131-32/+39
| | | | | | | | | | | | * exec.c (prepare_stream): New function, broken out of prepare. (prepare): Call it. [_STDIO_USES_IOSTREAM]: Do #error if this is defined. (map, input_room, close_exec_stream, fake_seek, prepare_stream): Conditionalize all these definitions on [! _STDIO_USES_IOSTREAM]. Only map and prepare_stream are called from elsewhere in the code. (check_gzip): Don't reinitialize E->stream, since it will in fact not be used again. (check_bzip2): Likewise.
* 1999-07-17 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath1999-07-181-2/+1
| | | | * exec.c (servercopy): Removed unused variable.
* 1999-07-11 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath1999-07-111-1/+2
| | | | * exec.c (load_section): Fix typos in last change.
* 1999-07-06 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell1999-07-111-17/+18
| | | | | | | | * exec.c (load_section): Use mmap instead of vm_allocate when allocating in mach_task_self (). (servercopy): Likewise. (do_exec): Likewise. * hashexec.c (check_hashbang): Likewise.
* 1999-07-10 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath1999-07-101-2/+6
| | | | | | | | | | | * exec.c (check_elf): Call elf_machine_matches_host instead of comparing against elf_machine. (load_section): #if 0 out no-op code that uses elf_machine. * priv.h (elf_machine_matches_host): Declare it. (elf_machine, mach_host_elf_machine): Remove decls. * main.c (main) [!BFD]: Don't call mach_host_elf_machine. (elf_machine): Variable removed. * exec.c (map): Don't cast arg to munmap to vm_address_t.
* 1999-07-03 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell1999-07-031-32/+18
| | | | | | | | | | | | | | | * core.c (core_dump_task): Use munmap instead of vm_deallocate, when it's from our own task. * elfcore.c: Likewise. * exec.c (load_section): Likewise. (map): Likewise. (close_exec_stream): Likewise. (finish_mapping): Likewise. (load): Likewise. (do_exec): Likewise. (S_exec_setexecdata): Likewise. * hashexec.c (check_hashbang): Likewise. * main.c (deadboot): Likewise.
* 1999-06-04 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath1999-06-041-2/+2
| | | | | * exec.c (map): Fix mapping calls to use F->__offset consistently instead of F->__target.
* 1998-09-05 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>Thomas Bushnell1999-04-301-0/+118
| | | | | | | | | * do-bunzip2.c: New file. * exec.c (check_bzip2): New function. (BZIP2): New cpp symbol. If defined, bunzip2 engine is enabled. * Makefile (bzip2-objects): New variable. (OBJS): Add bzip2-objects. (CPPFLAGS): Add -DBZIP2.
* 1999-04-27 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath1999-04-271-2/+26
| | | | * exec.c (do_exec): Implement EXEC_SIGTRAP flag.
* 1998-12-26 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath1998-12-271-1/+1
| | | | | | | * exec.c (do_exec): Fix conditional for cleaning up INTERP, from nonnull E.interp.section to nonnull INTERP.file. If we failed to open the interpreter file, INTERP.file will be null and the rest of INTERP will be uninitialized.