If grantpt() is called from a thread that is masking signals (for
instance, from a program using signalfd or using a dedicated
signal-handling thread), then that mask will get inherited to pt_chown.
This means that signals like SIGINT will not interrup pt_chown, so if it
hangs (e.g., because getgrnam("tty") hangs on a remote name service),
Ctrl-C will terminate the parent process but leave pt_chown around. Since
it's setuid, it's hard to kill any other way.
It is safe for pt_chown to unmask all signals, because grantpt() can be
(and usually is) called from an unprivileged process with all signals
unmasked.
The pt_chown program is completely transparently called. It might
not be able to live with the various file descriptors the program
has open at the time of the call (e.g., under SELinux). Close all
but the needed descriptor and connect stdin, stdout, and stderr
with /dev/null. pt_chown shouldn't print anything when called to
do real work.
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
2000-11-27 Andreas Jaeger <aj@suse.de>
* login/programs/pt_chown.c (do_pt_chown): Mark function as static
to avoid warning.
* login/programs/utmpdump.c (print_entry): Likewise.
1999-08-25 Mark Kettenis <kettenis@gnu.org>
* sysdeps/unix/sysv/linux/ptsname.c: Add checks to make sure we're
really dealing with a master pseudo terminal, and really returning
the name of the associated slave pseudo terminal by checking the
device number.
* sysdeps/unix/sysv/linux/pty-private.h: Removed.
* login/programs/pt_chown.c (do_pt_chown): Don't use unix98_pseudo_p.
1999-08-25 Ulrich Drepper <drepper@cygnus.com>
* inet/Makefile (routines): Add getipnodebynm.
* inet/getipnodebynm.c: New file.
* nss/digits_dots.c: If HAVE_TYPE is define type contains the
interface type.
* nss/nss_files/files-XXX.c: Define EXTRA_ARGS, EXTRA_ARGS_DECL, and
EXTRA_ARGS_VALUE is not already done.
(internal_getent): Allow extra parameters and pass them to parse_line.
(_nss_files_get,ENTNAME_r): Pass extra parameters to internal_getent.
(_nss_files_get##name##_r): Likewise.
* nss/nss_files/files-hosts.c: Define EXTRA_ARGS, EXTRA_ARGS_DECL,
and EXTRA_ARGS_VALUE to pass flags and type to parser.
Add getipnodebyname function.
* nss/nss_files/files-parse.c: Define EXTRA_ARGS, EXTRA_ARGS_DECL, and
EXTRA_ARGS_VALUE is not already done.
(parse_line): Add EXTRA_ARGS_DECL to parameter list.
* nss/nss_db/db-XXX.c (lookup): Allow extra parameters and pass them
to parse_line.
(_nss_db_get##name##_r): Pass extra parameters to lookup.
(_nss_db_get,ENTNAME_r): Likewise.
* sysdeps/generic/if_index.c (__protocol_available): New function.
* sysdeps/unix/sysv/linux/if_index.c: Likewise.
* login/pty-private.h: Move to...
* sysdeps/generic/pty-private.h: ...here.
* sysdeps/unix/sysv/linux/pty-private.h: New file. Linux specific
version.
* login/programs/pt_chown.c (do_pt_chown): Use unix98_pseudo_p is
available.
1999-03-31 Mark Kettenis <kettenis@gnu.org>
* login/programs/pt_chown.c (main): Save effective user ID before
dropping priviliges and use this to check if the program is
properly installed.
1999-03-30 20:59 -0500 Zack Weinberg <zack@rabi.phys.columbia.edu>
* login/programs/pt_chown.c: Drop privileges if invoked with
arguments. Don't close the master pty.
1998-09-18 17:41 Ulrich Drepper <drepper@cygnus.com>
* libio/fileops.c (_IO_new_file_underflow): Before allocating
buffer make sure the pushback buffer is destroyed.
(_IO_new_file_seekoff): Likewise.
If mode==0 quit early with the result.
Clear OEF flag after successful fseek.
* libio/libio.h (_IO_FILE_complete): Add _IO_save_ptr.
* libio/ftello.c (ftello): Add offset from original buffer if
stream has pushed back characters.
* libio/ftello64.c (ftello64): Likewise.
* libio/iofgetpos.c (_IO_fgetpos): Likewise.
* libio/iofgetpos64.c (_IO_fgetpos64): Likewise.
* libio/ioftell.c (_IO_ftell): Likewise.
* libio/genops.c (_IO_switch_to_main_get_area): Swap _IO_read_ptr
and _IO_save_ptr.
(_IO_switch_to_backup_area): Save _IO_read_ptr in _IO_save_ptr.
(_IO_default_pbackfail): Only stored push back character in original
buffer if it is the same as the one in the file at this position.
* libio/iofclose.c: Free backup buffer if one is available.
* libio/ioseekoff.c (_IO_seekoff): Only remove pushback buffer if
mode!=0.
* strdlib/strtol.c (strtol): Handle 0x... string for base!=0 correctly.
* time/strftime.c [_LIBC] (ampm): Use tp->tm_hour not hour12.
1998-09-18 Mark Kettenis <kettenis@phys.uva.nl>
* login/programs/pt_chown.c (more_help): Correct message that
describes the purpose of the program.
* login/openpty.c: Do not include pty-private.h.
(pts_name): New function. Return name of slave pseudo terminal in
an allocated buffer if necessary.
(openpty): Use pts_name to get name of the slave end of the pseudo
terminal pair.
* sysdeps/unix/grantpt.c (grantpt): Free buffer allocated by
pts_name before return.
1998-09-18 11:15 Ulrich Drepper <drepper@cygnus.com>
* math/math.h: Define __NO_MATH_INLINES if __STRICT_ANSI__.
1998-09-17 19:34 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/sysv4/bits/utsname.h: Fix typo.
Patch by John Tobey <jtobey@banta-im.com>.
1998-09-17 Mark Kettenis <kettenis@phys.uva.nl>
* login/pty-internal.h: Removed. Moved constants related to the
`grantpt' helper program protocol to ...
* login/pty-private.h: ... here. New file.
* sysdeps/unix/sysv/linux/ptsname.c (ptsname): Reimplementation
to make the function work with kernels >= 2.1.115.
* sysdeps/unix/sysv/linux/getpt.c (getpt): Reimplement to call BSD
version if using the cloning device fails.
* sysdeps/unix/sysv/linux/grantpt.c: New file.
* sysdeps/unix/sysv/linux/unlockpt.c: General cleanup.
* sysdeps/unix/bsd/getpt.c (__getpt): Largely rewritten to allow
use by Linux specific code.
* sysdeps/unix/bsd/unlockpt.c: General cleanup.
* sysdeps/unix/grantpt.c: Largely rewritten. (pts_name): New
function. (grantpt): Use pts_name, check group and permission
mode in addition to owner. Try to set the owner, group and
permission mode first without invoking the helper program.
* login/programs/pt_chown.c: Largely rewritten. Add argp and
internationalization support. Use symbolic constants instead of
hardwired numbers for permission mode.
* sysdeps/unix/bsd/ptsname.c: New file.
1998-09-17 22:04 Tim Waugh <tim@cyberelk.demon.co.uk>
* posix/wordexp-test.c: Undo last change.
* posix/wordexp.c: Undo last change.
1998-01-30 19:58 Ulrich Drepper <drepper@cygnus.com>
* include/cpio.h: Move to ...
* posix/cpio.h: ...here.
* locale/programs/ld-collate.c: Fix typo.
* signal/signal.h: Declare _sys_siglist with NSIG+1 elements.
* stdio-common/tiformat.c: Add checks for %#.0o and friends.
* login/utmp_file.c (pututline_file): Don't always report success
if similar entry is found. Patch by Mark M. Kettenis.
1998-01-30 16:06 Philip Blundell <pb@nexus.co.uk>
* manual/Makefile: Don't try to install the info files if makeinfo
is not available.
1998-01-30 12:05 Philip Blundell <pb@nexus.co.uk>
* sysdeps/unix/sysv/linux/bits/ioctls.h: Include a copy of the
kernel's network ioctls, rather than using <linux/sockios.h> to
get them. This way we are sure of maintaining compatibility if
the kernel interface should change.
1998-01-30 15:52 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/Dist: Add netrose/rose.h.
1998-01-25 19:54 Philip Blundell <Philip.Blundell@pobox.com>
* sysdeps/unix/sysv/linux/netrose/rose.h: New file.
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Install it.
1998-01-27 22:29 Zack Weinberg <zack@rabi.phys.columbia.edu>
Implement System V pseudoterminal handling.
* login/Makefile
(routines): Add getpt, grantpt, unlockpt, ptsname.
(libutil-routines): Remove pty. Add openpty, forkpty.
(distribute): New internal header pty-internal.h.
(others): Add the helper program, pt_chown.
(install-others): Install it, in $(libexecdir), mode 4755.
* login/pty-internal.h: New file.
* login/openpty.c: New file.
* login/forkpty.c: New file.
* login/programs/pt_chown.c: New file.
* libc.map: Add getpt, grantpt, unlockpt, ptsname, ptsname_r.
* stdlib/stdlib.h: Prototype them.
* config.make.in: Define $(libexecdir).
* Makeconfig: Define $(inst_libexecdir).
* sysdeps/generic/pty.c: Removed.
* sysdeps/unix/sysv/linux/pty.c: Removed.
* sysdeps/generic/getpt.c: Stub out.
* sysdeps/generic/grantpt.c: Likewise.
* sysdeps/generic/ptsname.c: Likewise.
* sysdeps/generic/unlockpt.c: Likewise.
* sysdeps/unix/grantpt.c: New file.
* sysdeps/unix/bsd/getpt.c: New file.
* sysdeps/unix/bsd/unlockpt.c: New file.
* sysdeps/unix/sysv/linux/getpt.c: New file.
* sysdeps/unix/sysv/linux/ptsname.c: New file.
* sysdeps/unix/sysv/linux/unlockpt.c: New file.
1998-01-29 23:56 Ulrich Drepper <drepper@cygnus.com>
* localedata/locales/ru_RU: Fix YESEXPR. Patch by lav@yars.free.net.
1998-01-29 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nss/Makefile (tests): Add rule for test-netdb.c.
* nss/test-netdb.c: New file.
1998-01-29 02:38 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-open.c (_dl_open): Make sure the variable `reloc' is
really kept as a variable. Patch by Richard Henderson,
reported by Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>.
* elf/rtld.c (dl_main): Call _dl_init_paths before handling preloading.
* elf/genrtldtbl.awk: Mark machine dependent directory of generated
entries as not existing.
1998-01-26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* stdio-common/vfprintf.c (process_arg): Fix printing of octal
zero in alternate form with precision of zero, which must produce
"0". Add braces to avoid ambiguous `else'.
1998-01-26 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/nss_compat/compat-grp.c: Fix memory leak and trailing null
problem with strncpy.
* nis/nss_compat/compat-pwd.c: Likewise.
* nis/nss_compat/comapt-spwd.c: Likewise.
1998-01-28 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* assert/assert.h (assert_perror): Correct test for errnum. Patch
by uch@nop.or.jp. [PR libc/437]
1997-12-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* locales/pl_PL: Fix int_curr_symbol.
1998-01-26 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/nis_cache.c: Include <unistd.h> for declaration of close.
1998-01-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* stdio-common/test-popen.c: Include <errno.h>.
* sysdeps/unix/sysv/linux/if_index.c: Include <unistd.h> for
close.
* inet/getnetgrent_r.c: Include <errno.h>.
* db2/db/db_conv.c: Include <string.h> for memcpy.
* gmon/bb_exit_func.c: Include <string.h> instead of <strings.h>
so that memcpy is declared.
* iconv/iconv_open.c: Include <stdlib.h> for alloca.
* misc/init-misc.c: Remove unneeded inclusion of <errno.h>.
1998-01-26 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* pwd/fgetpwent_r.c (__fgetpwent_r): Correctly handle buffer
overflow while reading line with fgets.
* grp/fgetgrent_r.c (__fgetgrent_r): Likewise.
1998-01-27 00:46 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/bits/types.h (__ipc_pid_t): Change to
unsigned short, not short.
Reported by Andreas Jaeger.
1998-01-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/unix/sysv/linux/mips/syscalls.list: Correct typo
(ccept->accept).
* sysdeps/generic/inttypes.h: Fix spelling.
1998-01-04 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/unix/sysv/linux/arm/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/alpha/Dist: Add net/route.h.
1998-01-27 00:30 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/printf.h (struct print_info): Add new bitfield is_char.
* stdio-common/printf-parse.h (parse_one_spec): Fill in is_char
field for hh modifier.
* stdio-common/vfprint.c: Use is_char field and do not depend in
is_short having the value 2.
Bug reported by Andreas Jaeger.
1998-01-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* libio/freopen.c (freopen): Call _IO_old_freopen only if defined
PIC && DO_VERSIONING.
1998-01-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Rules: Add rules for $(common-objpfx)dummy$o.