Commit Graph

77 Commits

Author SHA1 Message Date
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
cgd
e5456f6c3e replace sys_process.c with the 4.4-Lite version 1994-05-18 11:32:27 +00:00
cgd
ed848af6f7 function name changes 1994-05-07 00:51:06 +00:00
cgd
a0a7429482 lots of changes: prototype migration, move lots of variables, definitions,
and structure elements around.  kill some unnecessary type and macro
definitions.  standardize clock handling.  More changes than you'd want.
1994-05-05 05:35:42 +00:00
cgd
4bbabd8e7a Rename a lot of process flags. 1994-05-04 03:41:12 +00:00