Commit Graph

4542 Commits

Author SHA1 Message Date
Todd C. Miller
3ece4c837f Call tcgetpgrp() in the parent, not the child and have the child spin
until it is granted.  Fixes a race on darwin.
2009-10-15 13:46:11 +00:00
Todd C. Miller
52f3374ce3 Only use TIOCNOTTY in the non-setsid case. If no TIOCSCTTY, just
reopen slave.
2009-10-15 13:38:11 +00:00
Todd C. Miller
7411b071e4 In script mode, if the command is killed by a signal, print the
signal description as well as a core dump notification like the
shell does.
2009-10-14 20:04:16 +00:00
Todd C. Miller
233377a8b7 Add check for strsignal() and a simple implementation if it is not there but sys_siglist is 2009-10-14 20:04:04 +00:00
Todd C. Miller
7bfe0fe957 Add missing WUNTRACED and store the signal that stopped the grandchild
in suspended, not signo.
2009-10-14 13:37:23 +00:00
Todd C. Miller
cd8ba12194 g/c unused code 2009-10-14 13:20:24 +00:00
Todd C. Miller
0d04ffc40c Associate the grandchild's pgrp with the tty instead of the child's
and just get suspend notifications via SIGCHLD instead of directly.
This fixes a hang with programs that try to set terminal attributes
and is more consistent with how the shell handles things.
2009-10-14 13:01:04 +00:00
Todd C. Miller
d72afb29a3 Move setpgid() of child into the parent side of the fork() where it
belongs.
2009-10-12 14:30:46 +00:00
Todd C. Miller
bc1769df24 fix typo 2009-10-11 22:02:02 +00:00
Todd C. Miller
88b93973fe Run command in its own pgrp (like the shell does) for easier signalling.
No need to relay SIGINT or SIGQUIT to parent, just send to grandchild.
Don't want grandchild stopped events in the child (only termination).
Flush output after suspending grandchild before signalling parent.
2009-10-11 21:41:36 +00:00
Todd C. Miller
a3185d3e25 Back out revision 1.34; the problem lies elsewhere. 2009-10-11 14:16:22 +00:00
Todd C. Miller
f44c2261fd Don't set stdout to blocking mode when flushing remaining output. It
can cause us to hang when trying to exit.  Need to investigate why.
2009-10-11 14:13:35 +00:00
Todd C. Miller
03e3ca08db Handle SIGTTOU and remove some debugging. 2009-10-11 13:25:23 +00:00
Todd C. Miller
9afe6a842e Back out revision 1.10 as the signal that interrupts us may be
SIGTTOU or SIGTTIN which the caller must handle.
2009-10-11 13:02:06 +00:00
Todd C. Miller
09a7bb78fe Apparently we need to send SIGSTOP to the command as well as ourself
when we get SIGTSTP, the kernel doesn't automatically stop the process
for us.
2009-10-11 12:42:03 +00:00
Todd C. Miller
2cf1b81abf Use an extra process to act as the glue bewteen the sessions
associated with the user's controlling tty (what the shell uses)
and the tty that sudo is using to do its logging.  Basically, this
means that if we get, e.g. SIGTSTP from the process sudo is running,
we relay the signal to the parent so it's shell can do the job control.
2009-10-11 12:27:11 +00:00
Todd C. Miller
3a343d499c Handle getting/setting terminal attributes when the fd is in non-blocking
mode.
2009-10-11 12:24:31 +00:00
Todd C. Miller
55434759f6 Add support for pausing and changing the speed in interactive mode. 2009-10-07 01:07:54 +00:00
Todd C. Miller
50b62b694d Already define O_NOCTTY in compat.h, don't need it here 2009-10-07 00:17:38 +00:00
Todd C. Miller
c8e048c208 Add missing protos 2009-10-06 13:19:20 +00:00
Todd C. Miller
378d15f8fc Always update the stashed mtime of the temp file instead of using what
we have for the original because the time resolution of the filesystem the
temporary is on may not match that of the filesystem that holds the original.
Should fix bz #371 found by Philippe Levan.
2009-09-30 13:50:58 +00:00
Todd C. Miller
5636a93f58 Use cbreak mode instead of raw mode and add signal handlers to restore
the tty on interrupt.
2009-09-30 02:13:19 +00:00
Todd C. Miller
fe9fc5ad1b Retain NL to NLCR conversion on the real tty and skip it on the pty
we allocate.  That way, if stdout is not a pty there are no extra carriage
returns.
2009-09-30 02:12:35 +00:00
Todd C. Miller
e6331c0773 Fix log_output(); just pass in a string and a length. 2009-09-30 02:00:16 +00:00
Todd C. Miller
8e4379b264 do not use errno when complaining out lack of a tty 2009-09-28 11:44:26 +00:00
Todd C. Miller
0d9e1e7b6d Instead of messing with line endings, just set terminal to raw mode
in sudoreplay.
2009-09-27 22:39:40 +00:00
Todd C. Miller
929f13fdfc When copying the terminal attributes to the pty, be sure not to set ONLCR.
This prevents extra carriage returns from ending up in the script output file.
2009-09-27 22:12:45 +00:00
Todd C. Miller
577fb346fd Convert a do {} while into a while 2009-09-27 22:11:11 +00:00
Todd C. Miller
672d0f592e Use if then instead of test && when installing binaries that may
not exist.
2009-09-27 18:54:08 +00:00
Todd C. Miller
4283bbcb2f Add O_NOCTTY when opening a tty device.
Explicitly disconnect from old tty before associatng with new one.
2009-09-27 18:34:18 +00:00
Todd C. Miller
7d19478501 First cut at refactoring some of the selinux code so it can be used
in conjunction with sudo's transcript support.
2009-09-27 13:03:56 +00:00
Todd C. Miller
c6a8c71d2b Fix default case of transcript_enabled being unset. 2009-09-26 20:25:58 +00:00
Todd C. Miller
d111b0d9bb Use _PATH_SUDO_TRANSCRIPT instead of _PATH_SUDO_SESSDIR 2009-09-26 15:41:14 +00:00
Todd C. Miller
8a6dcebd8a Hook up --disable-transcript and --enable-transcript=DIR 2009-09-26 15:34:46 +00:00
Todd C. Miller
0e823cdad2 _PATH_SUDO_SESSDIR -> _PATH_SUDO_TRANSCRIPT
Add --enable-transcript=DIR option to specify the directory
2009-09-25 20:39:09 +00:00
Todd C. Miller
c4fa5baa1c regen 2009-09-25 01:12:16 +00:00
Todd C. Miller
104a402b6a Substitute in default value for secure_path 2009-09-25 01:11:49 +00:00
Todd C. Miller
d8422c4fff Mention that the password must be followed by a newline with the -S option. 2009-09-25 00:31:35 +00:00
Todd C. Miller
7bb38284b0 Go back to dropping out of the select() loop when the process dies; Linux
ptys apparently don't behave the same as BSD in regards to select().
No need to flush remaining output to the transcript, only to stdout.
Add back code to check the master pty for additional data when we exit
the main select loop.
2009-09-20 13:51:51 +00:00
Todd C. Miller
b008f3fda8 Add getline.o to COMMON_OBJS 2009-09-19 19:24:48 +00:00
Todd C. Miller
16a495c6c7 sudoreplay depends on libsudo.a 2009-09-19 19:21:18 +00:00
Todd C. Miller
6c4eea59e7 More pwutil.o into COMMON_OBJS 2009-09-19 19:15:34 +00:00
Todd C. Miller
e56d4af8fd Remove my_* redirection in pwutil.c for testsudoers and just use the normal
libc get{pw,gr}* names.
2009-09-19 19:13:10 +00:00
Todd C. Miller
2950b0c759 More time and date examples 2009-09-19 18:26:38 +00:00
Todd C. Miller
6794ef5323 Move nanosleep() emulation into its own file
Check librt.a for nanosleep if we don't find it in libc
2009-09-19 17:44:34 +00:00
Todd C. Miller
2752268c9b Build libsudo with the common bits and link things against that. 2009-09-19 17:21:14 +00:00
Todd C. Miller
f68a24fb3b Fix final flush. 2009-09-19 11:43:24 +00:00
Todd C. Miller
3223231b1f Keep reading from the pty master -> log file until read returns <= 0.
Do our best to write everything to stdout when flushing any remaining bits.
2009-09-19 11:35:20 +00:00
Todd C. Miller
7de6bbcfd5 Use unbuffered I/O when writing to stdout and make sure we write
the entire buffer.
2009-09-19 00:21:27 +00:00
Todd C. Miller
6744c573b9 Only use max_wait if it is non-zero 2009-09-18 14:53:51 +00:00