Karel Zak [Tue, 29 May 2012 08:43:56 +0000 (10:43 +0200)]
Merge branch 'su-v1' of https://github.com/lnussel/util-linux
* 'su-v1' of https://github.com/lnussel/util-linux: (105 commits)
use existing logindefs.c and pathnames.h
syslog always
remove non pam code
make su build as part of util-linux
call setsid() when called with -c
make sure /sbin resp /usr/sbin are in PATH
honor settings in /etc/default/su resp /etc/login.defs
set sane default path
log all su attempts
pam support for su
Help translators include translation team's web or email address. * src/system.h (emit_bug_reporting_address): New function. * src/base64.c: Use it rather than a literal printf. * src/basename.c, src/cat.c, src/chgrp.c, src/chmod.c: * src/chown.c, src/chroot.c, src/cksum.c, src/comm.c, src/cp.c: * src/csplit.c, src/cut.c, src/date.c, src/dd.c, src/df.c: * src/dircolors.c, src/dirname.c, src/du.c, src/echo.c, src/env.c: * src/expand.c, src/expr.c, src/factor.c, src/fmt.c, src/fold.c: * src/head.c, src/hostid.c, src/hostname.c, src/id.c, src/install.c: * src/join.c, src/kill.c, src/link.c, src/ln.c, src/logname.c: * src/ls.c, src/md5sum.c, src/mkdir.c, src/mkfifo.c, src/mknod.c: * src/mv.c, src/nice.c, src/nl.c, src/nohup.c, src/od.c: * src/paste.c, src/pathchk.c, src/pinky.c, src/pr.c, src/printenv.c: * src/printf.c, src/ptx.c, src/pwd.c, src/readlink.c, src/rm.c: * src/rmdir.c, src/seq.c, src/setuidgid.c, src/shred.c, src/shuf.c: * src/sleep.c, src/sort.c, src/split.c, src/stat.c, src/stty.c: * src/su.c, src/sum.c, src/sync.c, src/system.h, src/tac.c: * src/tail.c, src/tee.c, src/test.c, src/touch.c, src/tr.c: * src/true.c, src/tsort.c, src/tty.c, src/uname.c, src/unexpand.c: * src/uniq.c, src/unlink.c, src/uptime.c, src/users.c, src/wc.c: * src/who.c, src/whoami.c, src/yes.c: Likewise.
Don't include dirname.h, since system.h does it now.
Add a bootstrap procedure, so that the CVS version contains fewer files and we bootstrap the rest from gnulib, gettext, etc. * README-cvs: New file. * bootstrap: New file. * bootstrap.conf: New file. * .x-sc_trailing_blank: Remove config-log, .gdb-history. Add .po. * configure.ac (AC_PREREQ): Move here from m4/*.m4, for benefit of gnulib-tool. (gl_DEFAULT_POSIX2_VERSION, gl_USE_SYSTEM_EXTENSIONS, gl_PERL): (gl_IGNORE_UNUSED_LIBRARIES): Remove; now done by gnulib. (gl_EARLY): Add. (gl_MACROS): Call just after gl_EARLY, just for clarity. * src/c99-to-c98.diff: Remove patch to ls.c; no longer needed. * src/kill.c (strtoimax): Remove decl. * src/ls.c: Include "wcwidth.h" instead of rolling it ourselves. * src/wc.c: Likewise. * src/ls.c (sort_files): Rewrite to avoid need for C99-style declaration, so that we don't need to patch this file. * src/printf.c (strtoimax, strtoumax): Remove decls. * src/su.c: Include getpass.h. (getpass): remove. * src/system.h: Include mempcpy.h, stpcpy.h, strpbrk.h. Include inttypes.h unconditionally; remove decls it handles. * lib/Makefile.am: include gnulib.mk, so that we can remove most of this file. (AM_CPPFLAGS): Don't mention -I$(srcdir), since that's now done for us. (noinst_LIBRARIES, LDDADD, DEFS): Remove. (libcoreutils_a_SOURCES): Trim down greatly, just to the files that aren't in gnulib. Remove defns gnulib does for us. * m4/check-decl.m4 (gl_CHECK_DECLS): Don't include stdio.h, string.h, stdlib.h, unistd.h, sys/time.h, time.h. Use AC_CHECK_DECLS_ONCE for free, getenv, geteuid, getlogin, getuid, lseek, malloc, memchr, realloc. Don't check for getutent, memrchr, nanosleep, stpcpy, strndup, strnlen, strstr, strtoul, strtoull. (_gl_DECL_HEADERS): Remove; all uses removed. * m4/jm-macros.m4 (gl_MACROS): Move AC_PREREQ into configure.ac for the benefit of gnulib-tool. Call gl_INIT. Do not call or require macros that gnulib will handle for us. Don't check for fchmod, hasmntopt, isascii, lchown, listmntent, mempcpy, realpath, wcrtomb, tzset. (gl_CHECK_ALL_HEADERS): Don't check for sys/statvfs.h, sys/vfs.h, sys/mount.h. (gl_CHECK_ALL_TYPES): Require AC_TYPE_UNSIGNED_LONG_LONG_INT. Don't check for struct stat.st_blksize. Don't require AC_STRUCT_ST_DM_MODE, gt_TYPE_SSIZE_T, gl_AC_TYPE_UINT32_T, gl_AC_TYPE_UINTMAX_T, gl_AC_TYPE_UINTPTR_T, gl_AC_TYPE_UNSIGNED_LONG_LONG. * m4/prereq.m4 (gl_PREREQ): Require gl_FUNC_XFTS, gl_ROOT_DEV_INO. Don't require macros that gnulib does for us. * m4/stat-prog.m4 (cu_PREREQ_STAT_PROG): Don't check for sys/sysmacros.h. Don't check for statvfs. Use AC_CHECK_HEADERS_ONCE for netinet/in.h, nfs/nfs_clnt.h, nfs/vfs.h. Don't require gl_AC_TYPE_LONG_LONG, gt_HEADER_INTTYPES_H.
* src/su.c (usage): Correct typo in --help output: s/commmand/command/ Reported by Tim Waugh. Also remove the comment duplicating much of --help output.
(log_su, run_shell): Use new last_component, in place of base_name.
Remove unnecessary parens in `#if defined (SYMBOL)' expressions.
Update FSF postal mail address.
Update FSF postal mail address.
(run_shell): Pass a new n_additional_args arg, so that the callee doesn't have to count 'em. All callers changed. Don't allocate more space for the arg vector than we'll need. Use memcpy to copy the args rather than rolling our own loop. Use size_t for sizes. (fast_startup, simulate_login, change_environment, log_su, correct_password, restricted_shell, main): Use bool for booleans. (longopts): Don't assume change_environment is an int. Use NULL, not 0, for pointers. (xsetenv): New function, replacing xputenv and concat. All callers changed. (elements): Remove; no longer needed. (log_su, correct_passwd, main): Prefer !x to x==NULL. (log_su): 2 -> STDERR_FILENO. (modify_environment, main): Don't assume that getenv's returned value has an indefinite lifetime. (modify_environment): Allocate a larger environ. (main): Remove an impossible 'case 0'; if it happens now, it'll get diagnosed. Don't assume getpwnam results outlive endpwent. Check for null or empty pw_name, pw_dir and for null pw_passwd.
(correct_password, restricted_shell, main): Prefer the notation `STREQ (a, b)' over `strcmp (a, b) == 0'.
...
Ludwig Nussel [Fri, 25 May 2012 08:54:23 +0000 (10:54 +0200)]
use existing logindefs.c and pathnames.h
I'm not sure having /usr/local in _PATH_DEFPATH_ROOT and even putting it
in front is such a good idea though. /usr/local might be on NFS so could
prevent root from logging in if the network is down.
Davidlohr Bueso [Mon, 21 May 2012 20:32:25 +0000 (22:32 +0200)]
fdisk: add debug support
Based on libmnt, this patch adds basic debugging support for fdisk. Currently
only CONTEXT is debugged, yet keeps exact functionality as libmnt/libblkid.
Davidlohr Bueso [Mon, 21 May 2012 20:28:03 +0000 (22:28 +0200)]
fdisk: introduce fdisk context
This is the first patch that adds the initial parts of the new fdisk internal
API. Two functions are created to both init and deinit the fdisk context. Only
the device's descriptor and path are added as a start and these are replaced
throughout fdisk.c and label specific code.
All logic that opens the file does it with fdisk_new_context_from_filename(),
and this enforces always opening the device with rw, then, if unsuccesfull,
with read-only. This changes the current logic that opens the device with
certain permissions depending on the user given options. For example, -l opens
the device read-only.
This patch passed regression tests and local modifications for sgi/dos/sun disk
labels.
fixes lots of warning noise:
../../../include/c.h:112:0: warning: "container_of" redefined [enabled
by default]
/usr/lib/klibc/include/stddef.h:52:0: note: this is the location of the
previous definition
Petr Uzel [Thu, 17 May 2012 07:37:25 +0000 (09:37 +0200)]
blkid: stop device probing if error is detected
blkid -p dev1 dev2 [...] now stops upon first error detected and
returns correct value. Previously, if error was detected with dev1,
it continued with dev2 anyways and so the return value corresponded
to the last device only.
Reported-by: Bernhard Voelker <bernhard.voelker@siemens-enterprise.com> Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
Dave Reisner [Sun, 13 May 2012 19:14:49 +0000 (15:14 -0400)]
lib/mangle: check for end of string on every iteration
Checking for the null byte at the end of the string only conditionally
leads to segfaults, evidenced by mount helpers crashing on writes to
/run/mount/utab. Simply check for the null on each iteration, and append
a null byte to the mangled string before breaking.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Petr Uzel [Sun, 13 May 2012 11:57:46 +0000 (13:57 +0200)]
rev: mention tac(1) in 'SEE ALSO' man page section
Cc: James R. Van Zandt <jrv@debian.org>
From: James R. Van Zandt <jrv@debian.org>
Addresses: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=568709 Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
Petr Uzel [Sun, 13 May 2012 11:44:32 +0000 (13:44 +0200)]
mkswap: improve diagnostics message if the device is mounted
Currently, attempt to create swap on mounted partition results
with "/dev/sdXy: Device or resource busy" message being printed.
Change this to explicitly telling the user that the device is mounted.
Petr Uzel [Sun, 13 May 2012 11:44:31 +0000 (13:44 +0200)]
mkswap: allow creating swap on /dev/hd[ab]
Currently, mkswap does not allow swap to be created on /dev/hda and
/dev/hdb. There is no reason why /dev/hda and /dev/hdb should be treated
differently.
Addresses: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=491021 Cc: Russell Coker <russell@coker.com.au> Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
Jeremy Huntwork [Sun, 13 May 2012 16:31:48 +0000 (16:31 +0000)]
Remove use of __P. Its intended usage was to support pre-ANSI C compilers, but that is not even possible with the modern-day codebase. Moreover, it breaks compiling on libcs that do not define this legacy implementation-internal macro.
Petr Uzel [Sun, 6 May 2012 19:55:53 +0000 (21:55 +0200)]
libuuid: avoid double open and leaking fd (reworked)
This reverts commit 6126f7a53c57485a9a29ddd772765695f23c92e6
and fixes the double open and leaking descriptor in a different way,
that is by using newly introduced function 'have_random_source()'
to check whether good random source is available while deciding
which uuid type to generate (random/time).
This is better than calling random_get_fd() twice, passing the file
descriptor down the stack and reusing it in next call to
random_get_fd().
Davidlohr Bueso [Sun, 6 May 2012 12:10:25 +0000 (14:10 +0200)]
fdisk: sgi: abort on HDIO_GETGEO failure
When the HDIO_GETGEO ioctl fails on non IRIX/MIPS platforms (ie: inappropriate
ioctl for device) the variables that describe the geometry are compromissed.
One clear example is a division by 0 bug because the cylinder size is 0 is
verify_sgi():
$> fdisk sgi.img
Welcome to fdisk (util-linux 2.21.392-4b1c).
...
Command (m for help): x
Expert command (m for help): g
Building a new SGI disklabel.
Partition 11 of type SGI volume and of size 7.9 MiB is set
Floating point exception
Fix this by simply exiting the program instead of leaving it in a vulnerable
state.
Signed-off-by: Davidlohr Bueso <dave@gnu.org> Signed-off-by: Karel Zak <kzak@redhat.com>
Davidlohr Bueso [Sun, 6 May 2012 12:10:18 +0000 (14:10 +0200)]
fdisk: move DOS new/add partition code
Since this is DOS specific logic, it belongs in its own label file.
Additionally, a dos_new_partition() function is created that asks the user for
partition type and then calls the actual dos_add_partition().
This patch passed fdisk regression tests, builds without problems and it was
locally tested against adding and removing DOS partitions.
Davidlohr Bueso [Fri, 4 May 2012 11:35:32 +0000 (13:35 +0200)]
fdisk: fix segfault on bsd label
Commit 8db8295d824cd0c8cba9385e4635d6e311d69d3f added a regression that causes the program to crash when
touching the partition structure (pte) for BSD/OSF labels. Since DOS has its own initialization function,
allow BSD labels to use it as well.
Steps to reproduce:
$> fdisk bsd.img (obtained from blkid regression test files)
Command (m for help): p
...
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Petr Uzel [Thu, 3 May 2012 19:02:01 +0000 (21:02 +0200)]
libuuid: avoid double open and leaking descriptor
We are opening /dev/urandom twice in uuid_generate(): first to check if
the file is available and then later __uuid_generate_random() again to
actually get the random data. Moreover, descriptor from the first open
is leaking.
Fix by passign the descriptor down the stack and reusing it there.
Petr Uzel [Thu, 3 May 2012 19:01:59 +0000 (21:01 +0200)]
libuuid: don't exec uuidd
Executing the daemon from the shared library is not quite elegant
solution. Drop this functionality and require uuidd (should it be
needed) to be started from the initscript or by socket-activation.