Commit Graph

81 Commits

Author SHA1 Message Date
nathanw c7ca70e27a Add a ptrace interface for iterating over and collecting information
about LWPs. Loosely inspired by a similar interface in HP-UX ttrace(2).
2003-05-20 18:16:08 +00:00
nathanw b5a9638ee1 Adapt to the new conventions of proc_unstop() and don't try to call
setrunnable(NULL).
2003-02-07 21:44:45 +00:00
christos 3ea86aec06 PT_DUMPCORE support. 2003-01-23 17:35:18 +00:00
thorpej e0d8d366df Merge the nathanw_sa branch. 2003-01-18 10:06:22 +00:00
gmcgarry 366dfb04d7 Attempt to protect restartable atomic sequences of a traced process
being written to.  Breakpoints aren't good in a RAS.  This test isn't
infallible, since we can't protect memory which will be registered
as a RAS in the future.

Also, set the PC before attempting to single-step, so we can backout
from single-stepping.  Just in case we try to single-step into a RAS.
2002-08-28 07:27:14 +00:00
thorpej fde1164ef5 Fix some signed/unsigned comparison warnings from GCC 3.3. 2002-08-25 23:23:22 +00:00
jdolecek 02eb342b57 Make sure that the pointer to old parent process for ptraced children
gets reset properly when the old parent exits before the child. A flag
is set in old parent process when the child is reparented in ptrace(2).
If it's set when process is exiting, all running processes have their
'old parent process' pointer checked and reset if appropriate. Also
change to use 'struct proc *' pointer directly, rather than pid_t.
This fixes security/14444 by David Sainty.

Reviewed by Christos Zoulas.
2002-07-25 20:04:02 +00:00
thorpej f1f51aa2b8 Move code shared by procfs and the kernel proper out of procfs and
into the kernel proper (renaming functions from procfs_* to process_*).
2002-05-09 15:44:44 +00:00
thorpej 53df727d27 Add a new ptrace request, PT_IO, as proposed by Artur Grabowski
on the <bsd-api-discuss@wasabisystems.com> mailing list.  PT_IO
is a more general inferior I/D space I/O mechanism.  FreeBSD and
OpenBSD have also added PT_IO.

From lha@stacken.kth.se, kern/15945.
2002-03-17 17:02:45 +00:00
christos d4e7e4c9c4 Fix a ptrace/execve race that could be used to modify the child process's
image during execve. This is a security issue because one can
do that to setuid programs... From FreeBSD.
2002-01-11 21:16:27 +00:00
thorpej 03efee5585 * Allow machine-dependent code to specify hooks for ptrace(2)
(__HAVE_PTRACE_MACHDEP) and procfs (__HAVE_PROCFS_MACHDEP).
  These changes will allow platforms like x86 (XMM) and PowerPC
  (AltiVec) to export extended register sets in a sane manner.

* Use __HAVE_PTRACE_MACHDEP to export x86 XMM registers (standard
  FP + SSE/SSE2) using PT_{GET,SET}XMMREGS (in the machdep
  ptrace request space).
* Use __HAVE_PROCFS_MACHDEP to export x86 XMM registers via
  /proc/N/xmmregs in procfs.
2001-12-05 00:58:05 +00:00
lukem adc783d537 add RCSIDs 2001-11-12 15:25:01 +00:00
wiz a9356936b4 seperate -> separate 2001-07-22 13:33:58 +00:00
nathanw 9e8fb68348 The trace_req() function is a no-op; garbage collect it. 2001-06-13 16:06:27 +00:00
pooka 6c3e28927e fix typo in comment 2001-03-17 09:38:36 +00:00
fvdl ea08a209b5 Adapt for procfs_valid* argument change. 2001-01-17 01:13:23 +00:00
erh 3392996d23 Prevent ptrace on system processes. Avoids panic when attempting to ptrace pid 0, which has no parent. 2000-09-24 07:31:28 +00:00
thorpej a86d1f4891 Add a lock around the scheduler, and use it as necessary, including
in the non-MULTIPROCESSOR case (LOCKDEBUG requires it).  Scheduler
lock is held upon entry to mi_switch() and cpu_switch(), and
cpu_switch() releases the lock before returning.

Largely from Bill Sommerfeld, with some minor bug fixes and
machine-dependent code hacking from me.
2000-08-20 21:50:06 +00:00
eeh 2152b574c0 Fix LP64BE bug. 2000-07-28 04:21:26 +00:00
mrg 32aa199ccf remove include of <vm/vm.h> 2000-06-27 17:41:07 +00:00
sommerfe ef07055d58 Disallow tracing of processes unless tracer's root directory is at or
above tracee's root directory.
1999-03-25 04:45:56 +00:00
mrg d2397ac5f7 completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
1999-03-24 05:50:49 +00:00
mrg d90485202c - add defopt's for UVM, UVMHIST and PMAP_NEW.
- remove unnecessary UVMHIST_DECL's.
1998-02-10 14:08:44 +00:00
mrg 1a8c7604f4 initial import of the new virtual memory system, UVM, into -current.
UVM was written by chuck cranor <chuck@maria.wustl.edu>, with some
minor portions derived from the old Mach code.  i provided some help
getting swap and paging working, and other bug fixes/ideas.  chuck
silvers <chuq@chuq.com> also provided some other fixes.

this is the rest of the MI portion changes.

this will be KNF'd shortly.  :-)
1998-02-05 07:59:28 +00:00
mycroft 701f15db33 Reinstate P_FSTRACE, with different semantics:
* Never send a SIGCHLD to the parent if P_FSTRACE is set.
* Do not permit mixing ptrace(2) and procfs; only permit using the one that
  was attached.
1997-04-28 04:49:27 +00:00
mycroft e725c03060 When checking for init, compare against initproc, rather than comparing the
PID.  No functional difference.
1997-04-28 02:29:52 +00:00
tls 3052b5a949 fix obscure problem involving ptrace of init 1996-05-15 06:17:47 +00:00
christos 09afd77655 More proto fixes 1996-02-09 18:59:18 +00:00
christos 8a5b1b92e2 First pass at prototyping 1996-02-04 02:15:01 +00:00
mycroft 245f292fed Prefix names of system call implementation functions with `sys_'. 1995-10-07 06:25:19 +00:00
thorpej 60024eb978 Make system calls conform to a standard prototype and bring those
prototypes into scope.
1995-09-19 21:40:36 +00:00
mycroft 36a94a031a Lock the process in core before operating on it. 1995-08-13 09:05:51 +00:00
mycroft d7e904a697 Fix various signal handling bugs:
* If we got a stopping signal while already stopped with the same signal,
the second signal would sometimes (but not always) be ignored.
* Signals delivered by the debugger always pretended to be stopping
signals.
* PT_ATTACH still didn't quite work right.
1995-06-08 23:51:01 +00:00
mycroft 4a975bbe6f If necessary, wake up the child during attach so we always get a SIGCHLD. 1995-06-05 20:57:54 +00:00
mycroft 53f792b77d Omit the call to process_sstep() if PT_STEP is not defined. 1995-02-09 05:19:18 +00:00
cgd a03b011499 undo a part of the last change that mistakenly required PT_STEP.
(i simply undid that part of the change.)  also, fix a tyop.
1995-02-08 23:38:29 +00:00
mycroft 1815d82b85 Make attach/detach more safe. 1995-02-03 11:35:57 +00:00
mycroft 42d23cb6e4 Remove PT_{READ,WRITE}_U. 1995-01-26 17:56:21 +00:00
cgd 6ac2bbfc35 be more careful with types, also pull in headers where necessary. 1994-10-30 21:43:03 +00:00
cgd 6b86130410 update for new syscall args description mechanism 1994-10-20 04:22:35 +00:00
mycroft 3cc6cbc0e6 Correct test for already being traced. 1994-09-24 07:17:18 +00:00
cgd b690c315ff ugly (#ifdef) hack to fix m68k alignment differences, etc. Eventually,
should be done with a 'natual alignment' macro, or some such.
1994-09-14 16:40:29 +00:00
deraadt 280592c6a7 replace "ctob(UPAGES)" and "UPAGES * NBPG" with "USPACE"
(cvs dumped core during previous commit...)
1994-08-23 22:13:59 +00:00
cgd 94109335b3 kill errant spaces 1994-08-21 21:24:33 +00:00
mycroft 77fe78350b Minor update to a comment. 1994-08-15 16:45:14 +00:00
cgd 97bdeab31e replace with a completely rewritten version, based around the 4.4BSD
procfs.  Now the author of the old version will stop complaining that
we're using his code.
1994-08-15 16:32:41 +00:00
cgd b48d84b629 replce with virgin copy from 4.4-Lite 1994-08-15 16:29:22 +00:00
ws 2db64ab48d Try to pick myself up from the floor where I fell laughing. 1994-07-12 22:20:46 +00:00
cgd cf92afd66e New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD' 1994-06-29 06:29:24 +00:00
cgd fcb7a3c514 Implement ptrace() functionality, based on the previous version
by Sean Eric Fagan.
1994-05-18 11:37:00 +00:00