aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-05-30openrc-init: fix buffer overflow in init.ctlSergei Trofimovich
How to reproduce 1-byte overflow: ``` $ FEATURES=-test CFLAGS="-fsanitize=address -O0 -ggdb3" emerge -1 openrc ================================================================= ==1==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fff0efd8710 at pc 0x000000402076 bp 0x7fff0efd7d50 sp 0x7fff0efd7d40 WRITE of size 1 at 0x7fff0efd8710 thread T0 #0 0x402075 (/sbin/openrc-init+0x402075) #1 0x3cf6e2070f in __libc_start_main (/lib64/libc.so.6+0x3cf6e2070f) #2 0x4013b8 (/sbin/openrc-init+0x4013b8) Address 0x7fff0efd8710 is located in stack of thread T0 at offset 2432 in frame #0 0x401cfb (/sbin/openrc-init+0x401cfb) This frame has 3 object(s): [32, 160) 'signals' [192, 344) 'sa' [384, 2432) 'buf' <== Memory access at offset 2432 overflows this variable HINT: this may be a false positive if your program uses some custom stack unwind mechanism or swapcontext (longjmp and C++ exceptions *are* supported) SUMMARY: AddressSanitizer: stack-buffer-overflow ??:0 ?? ``` The problem here is in the code handling reads from 'init.ctl': ``` int main(int argc, char **argv) { ... char buf[2048]; for (;;) { /* This will block until a command is sent down the pipe... */ fifo = fopen(RC_INIT_FIFO, "r"); count = fread(buf, 1, 2048, fifo); buf[count] = 0; ... } ``` `buf[count] = 0;` writes outside the buffer when `fread()` returns non-truncated read. This fixes #138.
2017-05-30mk/cc.mk: make implicit function declarations fatal (#136)Sergei Trofimovich
Avoids issues with missing prototypes causing truncation of pointers. Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2017-05-30rc-logger.c: fix crash on fclose(NULL) (#137)Sergei Trofimovich
Only close the log if we successfully opened it. Reported-by: Brian Evans <grknight@gentoo.org> Tested-by: Brian Evans <grknight@gentoo.org> Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2017-05-22typo fixWilliam Hubbs
X-Gentoo-Bug: 618888 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=618888
2017-05-22openrc-shutdown: add dry-run optionWilliam Hubbs
2017-05-22openrc-shutdown: move to single user mode by defaultWilliam Hubbs
To be more compatible with sysvinit, move to single user mode if no options are specified on the command line.
2017-05-22init: add ability to switch to single user modeWilliam Hubbs
2017-05-19add kill_all helperWilliam Hubbs
This is similar to the sysvinit killall5 utility. It should only be used in service scripts, so it will not be installed in the path. This closes #129.
2017-05-15rc_status: calculate time differences in time_t and display seconds in uptimeWilliam Hubbs
2017-05-12supervise-daemon: save start time and respawn count before dropping privsWilliam Hubbs
2017-05-12version 0.27William Hubbs
2017-05-11update ChangeLogWilliam Hubbs
2017-05-11man/rc-status: document changes for supervised daemonsWilliam Hubbs
rc-status now shows the amount of time a supervised daemon has been active as well as the number of times it has been respawned during the current respawn period.
2017-05-11rc-status: show uptimes and respawn counts for supervised daemonsWilliam Hubbs
2017-05-11fix to_time_t to honor dstWilliam Hubbs
2017-05-11fix from_time_t functionWilliam Hubbs
2017-05-11Move time_t conversions to rc-misc.c so they can be sharedWilliam Hubbs
2017-05-11supervise-daemon: save start time and respawn countWilliam Hubbs
This will allow rc-status to display an uptime and restart count for supervised processes.
2017-05-11supervise-daemon: fix our status when we give up on the child processWilliam Hubbs
2017-05-10supervise-daemon:create multiple options from --respawn-limitWilliam Hubbs
This creates --respawn-delay, --respawn-max and --respawn-period. It was suggested that it would be easier to follow if the options were separated. This is for #126.
2017-05-09supervise-daemon: add a --respawn-limit optionWilliam Hubbs
Allow limiting the number of times supervise-daemon will attempt to respawn a daemon once it has died to prevent infinite respawning. Also, set a reasonable default limit (10 times in a 5 second period). This is for issue #126.
2017-04-29supervise-daemon: mark all open file descriptors FD_CLOEXECWilliam Hubbs
2017-04-29supervise-daemon:remove the controlling tty in the supervisorWilliam Hubbs
2017-04-29supervise-daemon: fix access to tty_fd and devnull_fdWilliam Hubbs
Both the child and supervisor need access to these file descriptors.
2017-04-29supervise-daemon: mark the service started when the supervisor is activeWilliam Hubbs
2017-04-19version 0.26William Hubbs
2017-04-17update ChangeLogWilliam Hubbs
2017-04-17init: send term/kill signals as final step of shutdownWilliam Hubbs
2017-04-14reword the bugs section of the openrc-init man pageWilliam Hubbs
2017-04-13init: fix signal handlingWilliam Hubbs
The only signals we handle are SIGINT and SIGCHLD, so block all others and unblock them in the child process before we start a rurnlevel.
2017-04-12init: add re-exec capabilityWilliam Hubbs
This will allow the re-execution of the init process after upgrading OpenRC.
2017-04-10bootmisc: do not remove ld-elf32.so.hintsi.Dark_Templar
File /var/run/ld-elf32.so.hints is used on FreeBSD 64bit multilib This fixes #125.
2017-04-07Add attribution to openrc-init.c and openrc-shutdown.cWilliam Hubbs
2017-04-06add init processWilliam Hubbs
openrc-init.c and openrc-shutdown.c are based on code which was written by James Hammons <jlhamm@acm.org>, so I would like to publically thank him for his work.
2017-04-05Fix make install on FreeBSD: don't try to install /etc/init.d/modules twicei.Dark_Templar
2017-04-03start-stop-daemon: warn if calling --start with --retry or --stop with --waitAustin English
This fixes #122
2017-03-31init.d/agetty.in: add -prefix keywordWilliam Hubbs
2017-03-31init.d/mount-ro: change dependency on killprocs and savecache to afterWilliam Hubbs
killprocs always succeeds and savecache is not required by mount-ro, so we can just start after both of these have run.
2017-03-31agetty-guide: typo fixWilliam Hubbs
2017-03-28init.d: add agetty to ignore patternsWilliam Hubbs
2017-03-23sh/gendepends.sh.in: fix detection of service scriptsWilliam Hubbs
We do not need to care about the path on the shebang line of a service script as long as the shebang line ends with "openrc-run". This fixes #119 and #120.
2017-03-16update dependencies for clock serviceWilliam Hubbs
The clock services had a very long list of "before" dependencies that referred to other services within OpenRC. For ease of maintenance, convert these to "after clock" dependencies in the individual services.
2017-03-15update news fileWilliam Hubbs
2017-03-14Remove all occurances of 'before *' from dependenciesWilliam Hubbs
Using wildcards in dependencies causes issues when rc_parallel is set to yes because it can lead to deadlocks. All dependencies need to be explicit rather than implicit. This is the first stage of moving this direction.
2017-03-12init.d/sysfs.in: efivarfs tweaksWilliam Hubbs
Since we check for /sys/firmware/efi/efivars, we do not need to check for /sys/firmware/efi Since Failing to mount efivarfs is not critical, we silence the error message from mount.
2017-03-12version 0.25William Hubbs
2017-03-09update ChangeLogWilliam Hubbs
2017-03-09add agetty serviceWilliam Hubbs
The agetty service is an alternate way to manage gettys with agetty under Linux which is separate from an external init system.
2017-03-08init.d/sysfs: drop modules completely from the dependenciesWilliam Hubbs
This is for #112.
2017-03-07init.d/sysfs: Do not load efivarfs moduleWilliam Hubbs
My understanding is that the kernel can autoload this module. If it doesn't, the module should be built in or loaded from an initramfs. This fixes https://github.com/openrc/openrc/pulls/112.