Command line and full screen utilities for browsing procfs, a "pseudo" file system dynamically generated by Linux to provide information about the status of entries in its process table.
Go to file
Patrick Steinhardt 09a3687547 procio: fix potential out-of-bounds access when write fails
When writing to procfs via `proc_write` fails, we try to chunk the
buffer into smaller pieces to work around that issue. When searching for
the next location to split the buffer, though, we can underflow the
buffer in case the current offset is smaller than `LINELEN`. Fix the
issue by passing `cookie->offset` instead of `LINELEN` into `memrchr` in
case `cookie->offset` is smaller than `LINELEN`.

This bug can be triggered on musl-based systems, e.g. by executing

    $ sysctl kernel.printk_ratelimit=1000000000000000

As the value is out-of-range, `write` will return an error and set
`errno` to `EINVAL`. As we're only trying to write a smallish buffer
with a length smaller than `LINELEN` and as the buffer does not contain
any newlines, the call

    token = (char*)memrchr(cookie->buf+offset, '\n', LINELEN);

will underflow the buffer and crash the program.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
2019-03-04 21:55:07 +11:00
contrib miscellaneous: clean up trailing whitespace once again 2013-04-07 18:05:01 +10:00
doc documentation: Update pids manual pages 2017-01-05 09:44:04 +11:00
Documentation miscellaneous: remove some trailing whitespace buildup 2015-06-20 07:46:23 +10:00
include Build fails if not done from the source root directory (#105) 2018-08-08 20:03:16 +10:00
lib procio: fix potential out-of-bounds access when write fails 2019-03-04 21:55:07 +11:00
man-po misc: Tell po4a to handle email macros 2018-06-23 21:59:14 +10:00
misc build-sys: rename the 'tools' subdirectory to 'misc' 2012-03-02 21:25:38 +11:00
po update translations _______________________ (catch up) 2018-05-06 07:19:38 +10:00
proc library: improve header file item comments, <STAT> api 2019-01-22 22:49:24 +11:00
ps docs: Update ps.1 to warn about command name length 2018-08-13 20:53:56 +10:00
testsuite misc: fix ps etime tests 2018-05-03 21:13:16 +10:00
top top: adapt for changes in item identifiers, <STAT> api 2019-01-22 22:49:24 +11:00
.gitignore misc: Update translations _________________ (catch up) 2018-05-06 07:19:38 +10:00
.gitlab-ci.yml test: Update gitlab CI YAML to use shared runner 2016-04-20 22:20:55 +10:00
AUTHORS Changed git site to gitlab 2015-05-10 14:57:50 +10:00
autogen.sh Fix a remaining util-linux word in autogen 2012-02-26 08:39:16 +11:00
ChangeLog Changed git site to gitlab 2015-05-10 14:57:50 +10:00
configure.ac Port of merge request 49 to newlib 2017-08-19 23:05:22 +10:00
COPYING license: update FSF addresses 2012-03-04 08:04:24 +11:00
COPYING.LIB miscellaneous: clean up trailing whitespace once again 2013-04-07 18:05:01 +10:00
create-man-pot.sh misc: Update translations _________________ (catch up) 2018-05-06 07:19:38 +10:00
free.1 watch,free: interpet intervals in non-locale way 2016-07-03 16:20:48 +10:00
free.c free: fix scaling on 32-bit systems _______ (catch up) 2018-05-06 07:19:38 +10:00
INSTALL.md docs: Updated documentation 2015-05-10 17:23:54 +10:00
kill.1 docs: fix manual page warnings 2012-04-16 12:55:53 +02:00
kill.c 0022-skill: Simplify the kill_main() loop. 2018-06-23 21:59:14 +10:00
Makefile.am 3.3.13 release candidate 1 ________________ (catch up) 2018-05-06 07:19:38 +10:00
NEWS misc: Move NEWS item to correct version 2018-05-06 09:55:56 +10:00
pgrep.1 docs: Update pgrep.1 example to more modern browser 2017-12-22 15:10:54 +11:00
pgrep.c 0007-pgrep: Always null-terminate the cmd*[] buffers. 2018-06-23 21:59:14 +10:00
pidof.1 docs: Note limitation of pidof find scripts (catch up) 2018-05-06 07:19:38 +10:00
pidof.c 0020-pidof: Prevent integer overflows with grow_size(). 2018-06-23 21:59:14 +10:00
pkill.1 procps 010114 2002-02-01 22:47:29 +00:00
pmap.1 pmap: Including -p in the man page 2013-11-26 13:45:22 +01:00
pmap.c 0095-pmap: Fix extended mode in one_proc(). 2018-06-23 21:59:14 +10:00
pwdx.1 docs: fix manual page warnings 2012-04-16 12:55:53 +02:00
pwdx.c 0021-pwdx: Fix a misleading comment. 2018-06-23 21:59:14 +10:00
README.md misc: eliminate accumulated trailing whitespace, again 2016-03-12 14:53:53 +11:00
skill.1 skill: support namespaces 2013-04-18 13:59:44 -04:00
skill.c 0027-skill: Prevent multiple overflows in ENLIST(). 2018-06-23 21:59:14 +10:00
slabtop.1 procps: Add a zero-width break point in slabtop.1 2015-06-01 22:04:40 +10:00
slabtop.c misc: eliminate all those remaining gcc -Wall warnings 2017-05-22 21:38:10 +10:00
snice.1 procps 010114 2002-02-01 22:47:29 +00:00
sysctl.8 docs: sysctl.8 clarify when w flag is required 2018-02-19 21:07:21 +11:00
sysctl.c sysctl: fix typo in help __________________ (catch up) 2018-05-06 07:19:38 +10:00
sysctl.conf misc: Add some link examples to sysctl.conf (catch up) 2018-05-06 07:19:38 +10:00
sysctl.conf.5 misc: remove some newly introduced trailing whitespace 2016-09-26 07:40:45 +10:00
tload.1 docs: fix manual page warnings 2012-04-16 12:55:53 +02:00
tload.c 0015-tload: Prevent integer overflows of ncols, nrows, and scr_size. 2018-06-23 21:59:14 +10:00
translate-man.sh Fixed translate-man.sh for no top ps 2014-05-28 20:12:33 +10:00
uptime.1 docs: Fix typos in slabtop.1, sysctl.8 and uptime.1 2014-09-16 19:35:28 +02:00
uptime.c 0009-uptime: Check the return value of various functions. 2018-06-23 21:59:14 +10:00
vmstat.8 library: reverting tmpfs subtraction from cached (18-FEB-2014) 2014-04-30 13:59:34 +02:00
vmstat.c 0125-vmstat: Prevent out-of-bounds writes in new_header() and diskheader(). 2018-06-23 21:59:14 +10:00
w.1 w: correct program help & man page regarding arguments 2015-09-07 18:11:48 +10:00
w.c 0121-w: Clamp maxcmd to the MIN/MAX_CMD_WIDTH range. 2018-06-23 21:59:14 +10:00
watch.1 docs: Reword --exec option in watch.1 _____ (catch up) 2018-05-06 07:19:38 +10:00
watch.c watch: use sysconf() for hostname length __ (catch up) 2018-05-06 07:19:38 +10:00

build status procps

procps is a set of command line and full-screen utilities that provide information out of the pseudo-filesystem most commonly located at /proc. This filesystem provides a simple interface to the kernel data structures. The programs of procps generally concentrate on the structures that describe the processess running on the system.

The following programs are found in procps:

  • free - Report the amount of free and used memory in the system
  • kill - Send a signal to a process based on PID
  • pgrep - List processes based on name or other attributes
  • pkill - Send a signal to a process based on name or other attributes
  • pmap - Report memory map of a process
  • ps - Report information of processes
  • pwdx - Report current directory of a process
  • skill - Obsolete version of pgrep/pkill
  • slabtop - Display kernel slab cache information in real time
  • snice - Renice a process
  • sysctl - Read or Write kernel parameters at run-time
  • tload - Graphical representation of system load average
  • top - Dynamic real-time view of running processes
  • uptime - Display how long the system has been running
  • vmstat - Report virtual memory statistics
  • w - Report logged in users and what they are doing
  • watch - Execute a program periodically, showing output fullscreen

Reporting Bugs

There are a few ways of reporting bugs or feature requests:

  1. Your distributions bug reporter. If you are using a distribution your first port of call is their bug tracker. This is because each distribution has their own patches and way of dealing with bugs. Also bug reporting often does not need any subscription to websites.
  2. GitLab Issues - To the left of this page is the issue tracker. You can report bugs here.
  3. Email list - We have an email list (see below) where you can report bugs. The problem with this method is bug reports often get lost and cannot be tracked. This is especially a big problem when its something that will take time to resolve.

If you need to report bugs, there is more details on the Bug Reporting page.

Email List

The email list for the developers and users of procps is found at http://www.freelists.org/archive/procps/ This email list discusses the development of procps and is used by distributions to also forward or discuss bugs.