Commit Graph

196 Commits

Author SHA1 Message Date
Jesse Smith
df1aec8981 Accepted patch from Luc Gommans which explains why zombie and
deep sleep processes (Z and D) may be hidden from pidof
2019-05-25 15:41:57 -03:00
Jesse Smith
cc464b1189 Use millisecond delays in init so that shutdown
can happen without a near-full-second delay after
all processes have terminated. Replaced do_sleep()
with do_msleep(), provided by Serge Belyshev.

Replaced hardwired sleep constants in init.c with
defined constants for easy updating in the future.
2019-04-20 18:54:46 -03:00
Jesse Smith
647ec365c6 Updated manual page for shutdown to better describe -h, -H and -P
flags.
2019-04-08 13:02:41 -03:00
Jesse Smith
f1da344565 Dropped "-f" format flag for pidof command as it
could be used to print information from memory or crash
pidof. Replaced flag with "-d" which allows for a custom
separator to be used between listed PIDs.
Patch supplied by KatolaZ.
2019-03-20 13:46:36 -03:00
Jesse Smith
4e2ad6a698 Fixed segfault in pidof when the -f (format) flag is used with
crafted format strings.
Avoid printing stack memory when special format string is passed
to -f.
Listed control characters for -f flag in manual page.
2019-03-18 18:09:24 -03:00
Jesse Smith
cf55352b97 Fixed various typos and control codes in manual pages.
Patch provided by Bjarni Ingi Gislason.
2019-03-03 17:32:28 -04:00
Jesse Smith
80e83960da Updated the fstab-decode manual page to explain what the utility does. 2019-02-21 15:09:48 -04:00
Jesse Smith
25191ff9aa Merge branch '2.94' 2019-02-19 19:22:15 -04:00
Jesse Smith
aa3b8121e1 Fixed typo in init.8 manual page. 2019-02-17 21:51:13 -04:00
Jesse Smith
483dc777d2 Changed the way the "when" variable is used internally in shutdown.c.
It starts as a NULL pointer, then might get set as a pointer to optarg,
then it might get set to point to an argv parameter, then it might have
a string value copied into it, over-writing the original data. We should
not risk over-writing internal variables which might get used for something
else (it's rude and security risk). Set up "when" as its own buffer
that has data from optargs and/or argv copied into it.

Minor code fixes across multiple source files to avoid buffer
overflows, or uninitialized strings.
2019-01-27 15:55:08 -04:00
Jesse Smith
3f2b4a5704 Added logsave.c and logsave.8 manual page from e2fsprogs to make
sure logsave is available to initscripts.

Updated src/Makefile to make sure bootlogd compiles with Clang.
2018-12-31 16:31:34 -04:00
Jesse Smith
5d955d55c8 Increased the size of the kernel command line buffer in bootlogd
from 256 characters to 4096. This size is defined in KERNEL_COMMAND_LENGTH
for easy modification downstream.
2018-12-29 14:46:10 -04:00
Jesse Smith
be8d584161 Added some defines and compile-time conditionals to make some
components of sysvinit compile on FreeBSD.
2018-12-09 19:32:04 -04:00
Jesse Smith
5dc965ba10 Removed references to malloc.h Allocating and freeing memory
is now handled by stdlib.h
2018-12-09 17:55:52 -04:00
Jesse Smith
64ebef64c8 Updated changelog to reflect new version number. 2018-11-24 12:49:14 -04:00
Jesse Smith
cb0a849e87 Added patch to re-enable the omit flag (-o) in pidof. 2018-11-24 12:37:25 -04:00
Jesse Smith
f0e93128bc When the halt command is called with the -p flag (or as poweroff)
the command now passes the "-h -P" flags to shutdown. This
in turn sets the INIT_HALT environment variable to POWEROFF.
Assuming this value is checked by initscripts during the
shutting down procedure, it should cause the system to
be powered off.
If halt is called without -p then the value of INIT_HALT
is not set and the default action (often set in /etc/defaut/halt)
is taken.
2018-11-23 22:11:42 -04:00
Jesse Smith
c03e2fac2b Added fix to pidof which re-enabled the omit (-o) flag.
this was broken when formatting was added in the 2.92 release.
Closes Debian bug #914494.
2018-11-23 18:00:23 -04:00
Jesse Smith
c679a49aac Added patch from Samuel Thibault to make project compile
on Hurd branch of Debian.
2018-11-19 18:12:13 -04:00
Jesse Smith
5b03e0faf0 Updated shutdown manual page to try to clarify which components
of the shutdown process vs shutdown program we are referring to.
2018-11-15 13:28:35 -04:00
Jesse Smith
f064d8f4b9 Added reference to readbootlog to the bootlogd manual page. This
should allow Debian bug #725123 to be closed.
2018-11-12 20:58:44 -04:00
Jesse Smith
5d3815b0ff Added manual page and options for readbootlog. 2018-11-12 20:53:52 -04:00
Jesse Smith
aa6873b85b Removed typos from pidof manual page and killall5 page.
Closes Debian bugs #815839, #905245 and #890478

Added -f <format> option to pidof program to allow printf
style formating.
Closes Debian bug #571590
Thanks to Philipp Marek for the patch.
2018-11-10 21:27:11 -04:00
Jesse Smith
2ece2c0364 Updated src/Makefile to confirm we build all the necessary software
prior to trying to install it.
2018-11-07 17:24:55 -04:00
Jesse Smith
848ee05104 Updated init manual page to include GRUB in boot loader comment
as LILO is rarely used outside of the Slackware family these days.

Switched stty flags to use ECHOE instead of ECHOPRT. This should
give smoother, more natural backspac-erase behaviour on emergency
consoles. (Created in init -b mode.)
2018-11-05 23:15:11 -04:00
Jesse Smith
2fd897ff3a Fixed typo in changelog. 2018-11-01 22:06:14 -03:00
Jesse Smith
c45219c64f Added -q and -Q flags to shutdown command to make the "system is going down"
message appear less often. The -q flag causes messages to only appear at the
10 minute, 5 minute and x-hour intervals.
The -Q flag maintains complete silence up until the final "now" warning.
2018-11-01 17:21:47 -03:00
Jesse Smith
44fce86dde Added -l flag to "last" command. When used it allows "last" to
display usernames longer than 8 characters long.
2018-10-30 21:46:04 -03:00
Jesse Smith
be8e6b9e1c shutdown command was setting environment variable INIT_HALT to
"POWERDOWN", this should have been "POWERDOWN" as specified in the
manual page. Fixed code to match manual page and init scripts.
2018-10-28 16:19:26 -03:00
Jesse Smith
a17f736a42 Applied patch from Regid Ichira to clarify shutdown command
line options. Updated manual page for shutdown.
Closes Debian bug #630661.
2018-10-27 20:37:47 -03:00
Jesse Smith
1b659c8ebe Applied patch from Daniel Povey which should allow killall5/pidof to
avoid locking up if it encounters stopped or zombie processes
due to broken NFS mount points.
This should allow Debian bug #719273 to be closed.
2018-10-27 20:26:15 -03:00
Jesse Smith
b4f8539153 Addressed man page documentation to warn the halt -i flag may
not properly shut down a network interface if it has no
valid IP address.
2018-10-22 22:19:49 -03:00
Jesse Smith
ed85143837 Removed super loud PC speaker beep during shutdown.
Closes Debian bug #614893. Patch from Andreas Fackler.
2018-10-22 22:03:09 -03:00
Jesse Smith
d27e34754a Unified shutdown and init to use 3 second wait between SIGTERM and
SIGKILL. Defined this value in init.h (WAIT_BETWEEN_SIGNALS) for
easy modification.
Updated documentation to address Debian bug #375274.
2018-10-22 21:44:39 -03:00
Jesse Smith
7b1d470949 Added check for kernel parameter init.autocon=1. If this exists, then
init will try to open its own console. If not, then any console=
parameters will be ignored. This avoids conflicts with native kernel
created consoles.
2018-09-29 17:12:12 -03:00
Jesse Smith
c29655a5c8 Updated changelog with information on pidof's new -q flag.
Fixed Makefile to make sure it does proper clean before making
tarball. And properly creates signed tarball afterwards.
2018-09-08 23:29:02 -03:00
Jesse Smith
6e8323e9fb The init process now writes the current runlevel to /var/run/runlevel.
This information can be read by the "runlevel" command as well as "halt"
and "reboot". Having the information logged in /var/run/runlevel as
well as the utmp file means systems without utmp (like those running
the musl C library) can still check the current runlevel. This is
useful when running halt/reboot as these programs want to check the
runlevel.

Updated the changelog, and manual pages for halt and runlevel.
2018-07-07 20:19:03 -03:00
Jesse Smith
7656f9d5f9 Version information is now fetched and defined by the Makefile.
No more need to update the version manually in the init.c source.
2018-07-01 18:44:57 -03:00
Jesse Smith
8cc9f34ca4 Merge branch '2.91' of git.sv.gnu.org:/srv/git/sysvinit into 2.91 2018-06-22 17:05:35 -03:00
Jesse Smith
4438de4e50 Added --version flag to init and updated manual page. 2018-06-22 17:04:47 -03:00
Jesse Smith
2a61e2b029 Adjusted order of compile flags to make it possible to select optimization
level by setting CFLAGS at compile file.
2018-06-21 20:22:44 -03:00
Jesse Smith
5f6d86d216 Adjusted order of compile flags to make it possible to select optimization
level by setting CFLAGS at compile file.
2018-06-21 19:34:25 -03:00
Jesse Smith
40f40a4166 Removed DATE define from init.c, not needed anymore.
Updated Changelog in prep for release.
2018-06-18 19:35:53 -03:00
Jesse Smith
c229965b62 Fixed typo. Corrected by Radostin Stoyanov. 2018-06-11 13:06:04 -03:00
Jesse Smith
2d6d2bc0d3 Updated toplevel Makefile to avoid created unnecessary temporary
directories when they are not wanted/required.
2018-06-03 20:14:01 -03:00
Jesse Smith
108b31e284 Switched from using -fstack-protector to -fstack-protector-strong compile
flag. Tested with both GCC and Clang.
2018-06-02 16:50:35 -03:00
Jesse Smith
56e1041034 Updated Makefile and version information. 2018-05-20 17:21:18 -03:00
Jesse Smith
75d85cc876 Fixed typo in Changelog. 2018-05-20 16:19:26 -03:00
Jesse Smith
bed25016b1 Updated sulogin.c to pull in crypt.h as it is a new, undocumented
dependency on Fedora 28.
Confirmed we can still build on other/older platforms.
2018-05-09 17:55:35 -03:00
Jesse Smith
3f400a01a3 Updated install documentation, fixed typo. 2018-05-05 17:11:29 -03:00
Jesse Smith
828c2704a1 Removed old LSM file.
Added .gitignore files to avoid git tracking object files.
Removed old start-stop-daemon from contrib directory.
2018-05-04 22:08:38 -03:00
Jesse Smith
e0cfd39728 Added "Fall through" comments to some switch statements where multiple
approaches are tried in order to prevent warnings from GCC 7 (and newer).

Added includes on Linux for sys/sysmacros.h as the old defines in
the sys/types.h file will be removed in the future.
2018-05-04 14:51:40 -03:00
Jesse Smith
cfb39b573f Updated init.c to remove some old notes and answer questions
that were flagged in comments or FIXME labels.
2018-04-23 00:09:49 -03:00
Jesse Smith
272f112c98 Added new signal handler for SIGUSR2. When init receives SIGUSR2
it closes (and leaves closed) the named pipe /run/initctl. This
can be used to make sure init does not have any files open. However,
it also means we cannot switch run levels or bring down the system.
The pipe can be re-opened by sending init the SIGUSR1 signal.

Updated the man pages for initctl and init to include this information.
2018-04-17 19:44:50 -03:00
Jesse Smith
f09da9cb55 Add check to make sure /run/initctl is open before we try to close
it when receiving SIGUSR1. Avoids crashing upon receiving signal.
2018-04-15 14:09:33 -03:00
Jesse Smith
266671c968 Added documentation page for initctl (/run/initctl). 2018-04-08 22:03:07 -03:00
Jesse Smith
a4508479f5 Updated shutdown to check if time has lapsed when we did not
notice. For example if the computer was in sleep mode pending
a shutdown. The shutdown command now notices time has past
and adjusts its countdown clock to compensate. Accurate
to the nearest minute.
Closes Savannah bug #36279
2018-04-04 23:12:25 -03:00
Jesse Smith
d9b6475d85 Removed unneeded "count" variable in utmpdump.c.
Fixed typo in accidental wrote_wtmp_rlevel == 0 || wrote_wtmp_rlevel
comparison so the latter is wrote_utmp_rlevel.

Simplified logic in mountpoint.c when testing for same device or same inode.

Thanks to David Binderman for pointing out the above three issues.
2018-03-30 22:15:04 -03:00
Jesse Smith
e02e001f7a Updated changelog in preparation for release. 2018-03-27 20:47:49 -03:00
Jesse Smith
a436cdc993 Merge branch 'mountpoint' 2018-03-27 20:33:52 -03:00
Jesse Smith
8c8172349e Updated mountpoint to search for circular mount points when using
the -p parameter. This works around mountpoint not recognizing
circular mounts where /a/b/c/d and /a/b are the same location
(ie the same device and same inode).
Closes Savannah bug #37114.
2018-03-07 16:25:53 -04:00
Jesse Smith
a8ef2a24c5 Updated changelog. 2018-03-07 13:59:51 -04:00
Jesse Smith
a3f38afc34 Updated documentation and install instructions. Refreshed copyright notice. 2018-02-27 17:28:10 -04:00
Jesse Smith
2e1f87635e Removed extra sleep() calls from shutting down process since we use
sync() anyway to pause and make sure data is written out to disk.
2018-02-22 21:07:51 -04:00
Jesse Smith
2b651b469e Fixed Clang compiler warning when calling sprintf() with
variable number of data parameters.
2018-02-21 18:05:58 -04:00
Jesse Smith
8c00f756ec Imported changelog from Jesse's source repo. 2018-02-20 19:42:51 -04:00
Jesse Smith
87032d1937 Moved initscript.sample from source to doc directory and committed it. 2018-02-20 19:39:07 -04:00
Jesse Smith
80dbcf3de3 Moved the named communication pipe from /dev/initctl to /run/initctl. This
patch was supplied by Robert Millan from Debian. FreeBSD apparently does not
like named piped in /dev, so we move it to /run for better cross-platform
compatibility.
2018-02-20 19:29:08 -04:00
Petter Reinholdtsen
ca4561271e Check exit code from dup() in spawn() and log error if it fail.
Patch from Michał Kulling.
2014-02-10 22:47:27 +00:00
Petter Reinholdtsen
d53cccb542 Use narrowly scoped file descriptor for handling opened TTY in
spawn().  Patch from Michał Kulling.
2014-02-10 22:44:15 +00:00
Petter Reinholdtsen
da988bb28e Make it possible to specify the initctl path as a compile time define INIT_FIFO. 2014-02-07 23:27:39 +00:00
Petter Reinholdtsen
4811afc88b Remove obsolete/ directory from tarball. None of it have been useful for many years. 2014-02-07 19:16:41 +00:00
Petter Reinholdtsen
67710ce13b Drop dsf part from version number. It no longer make sense to keep. 2014-02-07 19:04:25 +00:00
Petter Reinholdtsen
303f3465f6 Port ifdown.c to FreeBSD. Patch from Guillem Jover and Debian. 2014-02-07 17:55:37 +00:00
Petter Reinholdtsen
58b3b75728 Fix typo in fstab-decode(8) font escape. Patch from Bjarni Ingi
Gislason and Debian.
2014-02-07 17:44:15 +00:00
Petter Reinholdtsen
a05987e281 Document length limit for the process field in the inittab. Patch
from Johannes Truschnigg and Debian.
2014-02-07 17:41:58 +00:00
Petter Reinholdtsen
1b91c378b9 Adapt bootlogd TIOCCONS call to kfreebsd. Patch from Mats Erik
Andersson and Debian.
2014-02-07 17:03:04 +00:00
Petter Reinholdtsen
de1344feb8 Rewrite findtty() in bootlogd.c to not chance working directory, to
reduce the amount of failure that can happin in that function.
2014-02-07 11:06:57 +00:00
Petter Reinholdtsen
8478327498 Adjust makefile to make it easier to link all binaries statically.
Patch from Matias A. Fonzo and Dragora.
2014-01-28 22:11:34 +00:00
Petter Reinholdtsen
834bcebcaf Use sysconf(_SC_SYMLOOP_MAX) instead of MAXSYMLINKS. If sysconf
returns an error, fall back to MAXSYMLINKS on platforms that
define it.  Fixes build on Hurd.  Patch from Justus Winter and
Debian.
2014-01-28 10:13:10 +00:00
Petter Reinholdtsen
c26aaa4410 Define _XOPEN_SOURCE when building to get crypt() from <unistd.h> instead of using <crypt.h> in sulogin.c, to get the source building with the musl C library. 2014-01-27 22:05:54 +00:00
Petter Reinholdtsen
52b92185de Move dovoid() macro from #ifdef__GLIBC__ to #ifdef __linux__, to match the condutions of the place where it is used. Thanks to Matias A. Fonzo for noticing. 2014-01-27 21:55:57 +00:00
Petter Reinholdtsen
f11cdf9554 Adjust included headers to be compatible with the musl C library. Patch from Matias A. Fonzo and Dragora. 2014-01-26 22:00:42 +00:00
Petter Reinholdtsen
d2f82534cf Try harder to find libcrypt.*, even if there is no static library
available.  Also look in /usr/lib/*/ for the library, to handle
Debian multiarch systems.  Based on patch from Andrew Gregory.
2014-01-25 21:57:25 +00:00
Petter Reinholdtsen
45660f6ee6 Rename internal functions warn() and shutdown() in the shutdown
binary to avoid surprising dynamic library name resolution
conflict with NSS modules.  Patch from Richard Tollerton.
2014-01-25 21:50:09 +00:00
Petter Reinholdtsen
ffcb38faae Fix typo in changelog text. 2014-01-25 21:25:21 +00:00
Petter Reinholdtsen
571c45f3e6 Improve message printed when signaling processes to stop. Patch from Matias A. Fonzo at the dragora project. 2014-01-25 21:20:22 +00:00
Werner Fink
1017641f3e Shutdown: use PATH_DEFAULT as suggested by Paul Arthur in local bug #36101
Killall5/pidof: handle strange names of executables (local bug #36252)
Sulogin: be aware the crypt(3) may fail (local bug #36313)
2012-10-11 13:10:40 +00:00
Werner Fink
ec06765756 * Do not forget room for last NULL of new environment (was local bug 35866) 2012-03-19 12:50:36 +00:00
Werner Fink
99a0a2583f * Handle deleted binaries in pidof (was local bug #34992) 2012-03-16 16:46:06 +00:00
Werner Fink
d1a0609ab0 * Allow init to delte extra environment variables (was local bug
#35858)
* Avoid that init double environment variables for its childs
  (was local bug #35855)
2012-03-16 15:58:21 +00:00
Werner Fink
6fe3edd48c Add some code to be able to detect programs even as user with
kernel 3.0 and above
2011-10-17 12:53:27 +00:00
Werner Fink
4860983f8b Sulogin: respect byte order that is do not mix chars and ints 2011-07-27 10:49:05 +00:00
Werner Fink
09aa81cdbb Sulogin: if zero is read at reading the passwd guess it's done. 2011-07-26 12:03:13 +00:00
Werner Fink
eddea371ca Sulogin: enforce reconnection of stdin/stdout/stderr if a device
was specified.
2011-07-26 10:21:13 +00:00
Werner Fink
bfca7da0f5 * Remove man-db tag for encoding for canonical man 2011-04-27 13:41:04 +00:00
Werner Fink
4301a57e89 Sulogin: try to detect the real device(s) used for the system console
/dev/console if but only if /dev/console is used.  On Linux this can
be more than one device, e.g. a serial line as well as a virtual
console as well as a simple printer.
2011-04-04 13:57:54 +00:00
Werner Fink
d9122565a0 * Fix counting message lines in wall. Patch from Petr Lautrbach.
* Fix bad printf conversion specifier in wall. Patch from Sébastien Luttringer.
* Add patches from Openwall project. Thanks goes to Solar Designer.
2011-03-15 13:16:55 +00:00
Werner Fink
1ef9e7736c * Add code to detect the system consoles with the help of the
new /proc/consoles files of linux kernel 2.6.38+
2011-03-11 17:29:36 +00:00
Werner Fink
6dacdb9ad0 * Try to make utmpdump IPv6 valid, change based on suggestion from
Navdeep Bhatia (see local bug #32429)
2011-03-11 16:51:07 +00:00