From e0b30b9900072e8a9d7bc7a8ea4d0d32f6cd3a18 Mon Sep 17 00:00:00 2001 From: Troy Dawson Date: Oct 14 2020 23:32:06 +0000 Subject: RHEL 9.0.0 Alpha bootstrap The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/procps-ng#54e6aaca9f5621e4c6de1b015d5a480544b7672a --- diff --git a/.gitignore b/.gitignore index e69de29..95efdf4 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,5 @@ +/procps-ng-3.3.12.tar.xz +/procps-ng-3.3.13.tar.xz +/procps-ng-3.3.14.tar.xz +/procps-ng-3.3.15.tar.xz +/procps-ng-3.3.16.tar.xz diff --git a/README.md b/README.md new file mode 100644 index 0000000..bd35f75 --- /dev/null +++ b/README.md @@ -0,0 +1,52 @@ +[![build status](https://gitlab.com/ci/projects/2142/status.png?ref=master)](https://gitlab.com/ci/projects/2142?ref=master) +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](https://gitlab.com/procps-ng/procps/blob/master/Documentation/bugs.md) +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. diff --git a/README.top b/README.top new file mode 100644 index 0000000..b5ffcf5 --- /dev/null +++ b/README.top @@ -0,0 +1,377 @@ +This file summarizes changes to the top program and supporting documentation +introduced on March 31, 2011. + +Contents: + DOCUMENT Changes + INTERNAL Improvements + EXTERNAL Improvements + BUGS Previously Fixed and Preserved + BUGS Newly/Nearly Fixed + BUGS/WISH-LISTS That Should Go Bye-bye + BUGS FIXED You Didn't Know You Had + OTHER Changes, Hopefully They Won't Bite You + BENCHMARKS + + +DOCUMENT Changes ========================================================= + . The entire file was cleaned up, standardized and expanded to include: + - a new section "2. SUMMARY Display" added for symmetry with Fields + - nine new fields were added to section "3a. DESCRIPTIONS of Fields" + - a new section "3b. MANAGING Fields" replaced the obsolete section + "2b. SELECTING and ORDERING Columns" + - section "5c. SCROLLING a Window" was added for that new feature + + . I don't know when the explanations for CODE and DATA were changed to + show 'virtual' memory, but I think there's a reason their alternate + names contain the word 'resident'. Thus they were changed back to + say 'physical memory'. + + . And as I indicated in a previous email, the former string identifier + 'ME' was restored as were the 'h' key/command conventions (vs. ). + + Oops, the 'h' key/command conventions remain restored, but subsequent + testing revealed problems with the .ME string identifier. Thus, it was + changed to .WE (along with the companion .Me/.We id). + + . Also previously mentioned, the 'man2html' program translates top.1 to + HTML with near perfect fidelity. I take that to mean there should be + no problems with the top.1 source on most other platforms. + + To further improve translation to HTML, several .Bd and .Ed macros + were added to preserve literal (fixed width) spacing. + + +INTERNAL Improvements ==================================================== + . The old restriction of 26 fields has been lifted. With this new-top + 100+ fields are now possible. It currently supports up to 55, of + which 35 are in use. Adding a new field is almost too easy. + + . Task row construction has been considerably improved -- both from + a programming perspective and a performance perspective. + + . The column highlighting costs for sort field visibility were + virtually eliminated. + + An optional define (USE_X_COLHDR) can be enabled to completely + eliminate any costs associated with the 'x' command toggle. + + . The management of the HST_t structures, used for %cpu calculations, + was optimized with a hashing scheme. Thus the need for a qsort then + a binary search in each frame was completely eliminated. + + An optional define can restore the former qsort/bsearch approach but + with an internal inlined binary search function offering substantially + better performance than the old top. + + . This far more capable new-top executable is no larger than old top. + + . The above combine to produce substantially improved performance + whose details are documented below under BENCHMARKS. + + +EXTERNAL Improvements ==================================================== + . Field management has been completely redesigned. It's now embodied + on a single screen where display-ability, position and sort selection + can be handled in one place -- for all windows at one time! + + This function is dependent on cursor motion keys and should a device + not have the customary arrow keys, alternatives are provided and + documented under "Operation" near the beginning of the man page. + + . The following new fields have been added: + Group Id + Minor Page Faults + Number of Threads + Process Group Id + Real User Id + Saved User Id + Saved User Name + Session Id + Tty Process Group Id + + . Scrolling keys now allow one to move the view of any window vertically + or horizontally to reveal any desired task or column. Previously, only + some tasks were viewable even with reversible, selectable sort columns. + + Each of the four windows is capable of maintaining its own scrolled + coordinates and an optional toggle ('C') displays a message aiding + navigation within the available tasks and displayable fields. + + . User interactive line oriented input now provides for true line + editing supported by these new keys: + Left/Right arrow keys, Delete key, Backspace and + Home/End keys (likely limited to xterm, not terminal) + + . User filtering via the -u | -U interactive commands is now window + based which means that different windows could be used to filter + different users. + + . Signal handling has been normalized and is now consistent regardless + of the particular top screen a user may have been using. + + . The 'i' toggle now shows any task that has used *some* cpu since the + last screen update. It's no longer limited to just running tasks. + + . The summary area 'task states' line now reflects either 'Threads' + or 'Tasks' depending on the -H toggle. + + +BUGS Previously Fixed and Preserved ====================================== + ( but not necessarily literally) + . 228822, suspending top leaves xterm in slightly messed-up state + . 256376, segfaults, if the xterm is to small + . 320289, segv on sigwinch + . 351065, wrong highlight 1st column (escape characters displayed) + . 358724, accepts extra numeric args + . 378695, seg fault if "/proc" is not mounted + . 426782, UID field is too narrow + . 458986, should check xterm for EOF/EIO + . 459890, Irix mode should use %#4.1f when threads shown + + +BUGS Newly/Nearly Fixed ================================================== + . 225542, 'Unknown command' message blocks further commands + The message is now displayed using usleep for 1.25 seconds, instead + of the former full 2 seconds. And while it still blocks further + commands, the delay is much more tolerable. + + Can we consider this bug 'nearly' fixed? + + . 410292, interface error when using backspace + Full line editing was added but could be disabled via a #define. + And via that define, even under basic termios support, the backspace + problem was cured. + + . 567509, top idle command ('i') not working for threaded programs + Since the 'i' command now reflects tasks that have used *some* cpu, + and is no longer dependent on an 'R' state, I *believe/hope* this + bug has been swatted. + + +BUGS/WISH-LISTS That Should Go Bye-bye =================================== + . 340751, wish for hostname to benefit multiple top sessions + Craig's suggestion regarding symlinks is the perfect solution. + How dare Craig say that the solution was "not ideal" ! + + . 586497, wish for graceful degradation on small screen sizes + This objective could be accomplished by setting up 2 symlinks for + top, personalizing them for the 2 tiny phone displays, then writing + the respective configuration files. + + I shudder at the programming effort suggested by Paul. And when it + was done you'd find everybody else would have different criteria. + + +BUGS FIXED You Didn't Know You Had ======================================= + . Without amplifying the dirty details, the long standing occasionally + reported display corruption, and an unreported source of performance + degradation, has been eliminated. The cure is in the elimination of + the Pseudo_cols variable and the improved PUFF macro. + + . Line oriented input was not sensitive to screen width. Thus a user + could hold down any key and ultimately line wrap, overwriting the + columns header and the entire screen. New top prevents this. + + . User filtering (-u|-U) via a user ID (not name) now validates that + number. The old-top just made sure it was numeric, then blindly + displayed no matching users (i.e. an empty window). + + . The threads toggle ('H') is no longer window based but more properly + applies to all windows. The previous implementation produced the + following aberration if multiple windows were being shown: + . -H would be acknowledged and applied to all visible windows + . keying 'a' or 'w' would silently turn it off + . then keying -H would turn it back on, but the user expected off + + . If you hit ^Z on any help or fields screen to suspend old-top, after + issuing 'fg' you would then be left with a seemingly hung application + inviting ^C. In truth, one could recover with the space bar, but that + was far from intuitive. + + . The old-top consistently writes 1 extra byte for each task row or 1 + byte too few for columns headers, depending on your perspective. + The new top writes the same number of bytes for each. + + . By failing to clear to eol, old top left the display in a terrible + state after exiting a 'fields' screen when only a few columns were + being displayed. + + . The old-top used a zero value for the L_NONE library flag which could + cause repeated rebuilding of columns headers with each frame. In truth, + this was not likely to happen in real life since only two fields actually + used that flag. However, if it did happen, performance could be degraded + by 800%. + + +OTHER Changes, Hopefully They Won't Bite You ============================= + . The undocumented TOPRC environment variable is no longer supported. + Any similar need can be met through a symlink alias. + + . The use of environment variables to override terminal size is now + off by default but could be enabled through '#define TTYGETENVYES'. + + . The global 'bold enable' toggle is active by default and thus agrees + with the documentation. It's been wrong ever since Al's wholesale + 'cosmetic' changes in procps-3.2.2. + + . Task defaults now show bold (not reverse) and row highlighting. + This agrees with what was always stated in the documentation. + + . The 'H' toggle (thread mode) is not persistent. Persistence can be + achieved with a simple shell script employing the -H switch. + + . Then 'g' and 'G' commands were reversed to reflect their likely use. + + +BENCHMARKS =============================================================== + Tested as root with nice -10 and using only common fields + ( on a pretty old, slow laptop under Debian Lenny ) + but rcfiles specified identical sort fields and identical + settings for the 'B', 'b', 'x' and 'y' toggles (even though + the defaults are not necessarily identical). + + In every case new-top outperforms old-top, but I've shown % + improvements for only the most significant. Those cases mostly + involve colors with both row & column highlighting. I suggested + above that the highlighting cost was virtually eliminated in + new-top, and these tests bare that out. + + Note the much smaller differences for new-top between the 24x80 + window results and full screen (but don't mix apples_terminal + with oranges_xterm). This is a reflection of the simplification + of task row construction, also mentioned above. + + It's always been the case that any top in an xterm outperforms + that top under the terminal application, even when the xterm + provides additional rows and columns. It's true below with + Gnome and it was true nine years ago under KDE. + + ---------------------------------------------------------- + The following comparisons were run with: + 100 tasks & 160 threads + -d0 -n5000 + new-top old-top + xterm 24x80 + a 1 win, lflgs_none 11.2 secs 51.8 secs + 462.6% + 1 win, default 61.0 secs 66.8 secs + 1 win, colors w/ x+y 61.3 secs 83.0 secs + 135.4% + 1 win, thread mode 88.3 secs 94.2 secs + b 1 win, every field on 99.7 secs 106.0 secs + 1 win, cmdline 71.2 secs 76.6 secs + 4 wins, defaults 101.3 secs 107.2 secs + 4 wins, colors w/ x+y 101.5 secs 122.8 secs + 121.0% + + xterm, full screen (53x170) + a 1 win, lflgs_none 15.9 secs 54.2 secs + 340.9% + 1 win, default 70.0 secs 73.2 secs + 1 win, colors w/ x+y 69.4 secs 131.3 secs + 189.2% + 1 win, thread mode 97.6 secs 102.6 secs + c 1 win, every field on 122.1 secs 128.1 secs + 1 win, cmdline 80.8 secs 83.7 secs + 4 wins, defaults 111.4 secs 115.8 secs + 4 wins, colors w/ x+y 112.0 secs 172.9 secs + 154.4% + + terminal 24x80 + a 1 win, lflgs_none 8.9 secs 58.6 secs + 658.4% + 1 win, default 70.1 secs 80.3 secs + 1 win, colors w/ x+y 70.6 secs 157.3 secs + 222.8% + 1 win, thread mode 104.7 secs 120.5 secs + b 1 win, every field on 111.2 secs 134.5 secs + 1 win, cmdline 83.8 secs 94.5 secs + 4 wins, defaults 125.6 secs 146.7 secs + 4 wins, colors w/ x+y 125.6 secs 206.9 secs + 176.7% + + terminal, full screen (39x125) + a 1 win, lflgs_none 9.1 secs 60.6 secs + 665.9% + 1 win, default 74.3 secs 88.0 secs + 1 win, colors w/ x+y 73.9 secs 314.5 secs + 425.6% + 1 win, thread mode 113.0 secs 140.9 secs + b 1 win, every field on 117.7 secs 154.9 secs + 1 win, cmdline 87.4 secs 107.2 secs + 4 wins, defaults 139.1 secs 166.7 secs + 4 wins, colors w/ x+y 157.3 secs 423.2 secs + 269.0% + + ---------------------------------------------------------- + The following comarisons were run with: + 300 tasks & 360 threads + -d0 -n3000 + new-top old-top + xterm, full screen (53x170) + a 1 win, lflgs_none 14.3 secs 79.0 secs + 552.4% + 1 win, default 101.1 secs 104.5 secs + 1 win, colors w/ x+y 101.3 secs 140.0 secs + 138.2% + 1 win, thread mode 120.1 secs 123.1 secs + c 1 win, every field on 179.8 secs 185.6 secs + 1 win, cmdline 124.9 secs 132.8 secs + 4 wins, defaults 174.8 secs 179.2 secs + 4 wins, colors w/ x+y 175.0 secs 215.2 secs + 123.0% + + terminal, full screen (39x125) + a 1 win, lflgs_none 12.3 secs 98.5 secs + 800.8% + 1 win, default 117.4 secs 134.0 secs + 1 win, colors w/ x+y 111.6 secs 296.1 secs + 265.3% + 1 win, thread mode 141.3 secs 155.3 secs + b 1 win, every field on 197.7 secs 204.8 secs + 1 win, cmdline 143.9 secs 157.3 secs + 4 wins, defaults 204.0 secs 226.2 secs + 4 wins, colors w/ x+y 216.9 secs 434.5 secs + 200.3% + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + +notes: + a these results represent the library flags L_NONE zero value and + thus the hidden cost of rebuilding column headers w/ every frame + b while every common field was turned on, not all fields could be + displayed due to limited screen width + c only in a full screen xterm window could all common fields + actually be displayed + + +BENCHMARKS, Redux (for NLS) ============================================== + December, 2011 benchmarks produced on a much more modern + platform containing: + Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz + SMP with 4 cpus + reflected in the substantially reduced elapsed times. + + Tested as root with nice -10 and using only common fields + but rcfiles specified identical sort fields and identical + settings for the 'B', 'b', 'x' and 'y' toggles (even though + the defaults are not necessarily identical). + + Each test was run outside of X-windows at a linux console + offering 48 rows and 170 columns. This was done to reduce + contention which sometimes made comparisons problematic. + + old-top = procps-3.2.8 (debian patched and memory leaking) + new-top = procps-ng-3.3.2 with NLS support + + ---------------------------------------------------------- + The following comparisons were run with + -d0 -n5000 + 140 tasks & 275 threads + + linux console (48x170) new-top old-top + d 1 win, lflgs_none 2.6 secs 15.0 secs + 577.0% + 1 win, default 16.1 secs 19.3 secs + 1 win, colors w/ x+y 16.6 secs 35.0 secs + 210.8% + e 1 win, show cpus 16.2 secs 20.1 secs + 124.1% + 1 win, thread mode 31.8 secs 34.1 secs + f 1 win, every field on 30.5 secs 34.0 secs + 1 win, cmdline 19.9 secs 23.1 secs + 4 wins, default 31.9 secs 35.2 secs + 4 wins, colors w/ x+y 29.2 secs 47.4 secs + 162.3% + g 1 win, b&w w/ bold x 30.0 secs 33.2 secs + h 1 win, scroll msg on 31.1 secs 33.9 secs + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + +notes: + d these represent the same anamoly as the original 'a' footnote + e these represent the '1' toggle, where each of 4 cpus was shown + (not possible on the original uniprocessor) + f every common field was turned on and all fields were visible + g on a black and white display, sort column was shown in bold + (further proof of column highlighting improvements) + h similar to 'g', but new top was showing scroll msg + (old top has no such provision) diff --git a/pidof-show-worker-threads.patch b/pidof-show-worker-threads.patch new file mode 100644 index 0000000..229204b --- /dev/null +++ b/pidof-show-worker-threads.patch @@ -0,0 +1,41 @@ +diff --git a/pidof.c b/pidof.c +index b0d08cc..90ecb13 100644 +--- a/pidof.c ++++ b/pidof.c +@@ -142,6 +142,7 @@ static void select_procs (void) + static int size = 0; + char *cmd_arg0, *cmd_arg0base; + char *cmd_arg1, *cmd_arg1base; ++ char *stat_cmd; + char *program_base; + char *root_link; + char *exe_link; +@@ -167,9 +168,10 @@ static void select_procs (void) + } + } + +- if (!is_omitted(task.XXXID) && task.cmdline && *task.cmdline) { ++ if (!is_omitted(task.XXXID)) { + +- cmd_arg0 = *task.cmdline; ++ cmd_arg0 = (task.cmdline && *task.cmdline) ? *task.cmdline : "\0"; ++ stat_cmd = task.cmd ? task.cmd : "\0"; + + /* processes starting with '-' are login shells */ + if (*cmd_arg0 == '-') { +@@ -191,12 +193,14 @@ static void select_procs (void) + !strcmp(program_base, cmd_arg0) || + !strcmp(program, cmd_arg0) || + ++ !strcmp(program, stat_cmd) || ++ + !strcmp(program, exe_link_base) || + !strcmp(program, exe_link)) + { + match = 1; + +- } else if (opt_scripts_too && *(task.cmdline+1)) { ++ } else if (opt_scripts_too && task.cmdline && *(task.cmdline+1)) { + + cmd_arg1 = *(task.cmdline+1); + diff --git a/procps-ng-3.3.12-ps-luid-format-option.patch b/procps-ng-3.3.12-ps-luid-format-option.patch new file mode 100644 index 0000000..807db29 --- /dev/null +++ b/procps-ng-3.3.12-ps-luid-format-option.patch @@ -0,0 +1,61 @@ +diff -up ./ps/output.c.ori ./ps/output.c +--- ./ps/output.c.ori 2016-07-09 23:49:25.825306872 +0200 ++++ ./ps/output.c 2018-02-26 15:09:38.291043349 +0100 +@@ -1201,6 +1201,34 @@ static int pr_sgi_p(char *restrict const + return snprintf(outbuf, COLWID, "*"); + } + ++/* LoginID implementation */ ++static int pr_luid(char *restrict const outbuf, const proc_t *restrict const pp){ ++ char filename[48]; ++ ssize_t num_read; ++ int fd; ++ u_int32_t luid; ++ ++ snprintf(filename, sizeof filename, "/proc/%d/loginuid", pp->tgid); ++ ++ if ((fd = open(filename, O_RDONLY, 0)) != -1) { ++ num_read = read(fd, outbuf, OUTBUF_SIZE - 1); ++ close(fd); ++ if (num_read > 0) { ++ outbuf[num_read] = '\0'; ++ ++ // processes born before audit have no LoginID set ++ luid = (u_int32_t) atoi(outbuf); ++ if (luid != -1) ++ return num_read; ++ } ++ } ++ outbuf[0] = '-'; ++ outbuf[1] = '\0'; ++ num_read = 1; ++ return num_read; ++} ++ ++ + /************************* Systemd stuff ********************************/ + static int pr_sd_unit(char *restrict const outbuf, const proc_t *restrict const pp){ + return snprintf(outbuf, COLWID, "%s", pp->sd_unit); +@@ -1513,7 +1541,7 @@ static const format_struct format_array[ + {"longtname", "TTY", pr_tty8, sr_tty, 8, 0, DEC, PO|LEFT}, + {"lsession", "SESSION", pr_sd_session, sr_nop, 11, SD, LNX, ET|LEFT}, + {"lstart", "STARTED", pr_lstart, sr_nop, 24, 0, XXX, ET|RIGHT}, +-{"luid", "LUID", pr_nop, sr_nop, 5, 0, LNX, ET|RIGHT}, /* login ID */ ++{"luid", "LUID", pr_luid, sr_nop, 5, 0, LNX, ET|RIGHT}, /* login ID */ + {"luser", "LUSER", pr_nop, sr_nop, 8, USR, LNX, ET|USER}, /* login USER */ + {"lwp", "LWP", pr_tasks, sr_tasks, 5, 0, SUN, TO|PIDMAX|RIGHT}, + {"lxc", "LXC", pr_lxcname, sr_lxcname, 8, LXC, LNX, ET|LEFT}, +diff -up ./ps/ps.1.ori ./ps/ps.1 +--- ./ps/ps.1.ori 2016-05-07 13:15:32.014390172 +0200 ++++ ./ps/ps.1 2018-02-26 15:09:38.292043345 +0100 +@@ -1322,6 +1322,10 @@ displays the login session identifier of + if systemd support has been included. + T} + ++luid LUID T{ ++displays Login ID associated with a process. ++T} ++ + lwp LWP T{ + light weight process (thread) ID of the dispatchable entity (alias + .BR spid , \ tid ). diff --git a/procps-ng-3.3.13-build-fails-due-libio.patch b/procps-ng-3.3.13-build-fails-due-libio.patch new file mode 100644 index 0000000..f7ec65c --- /dev/null +++ b/procps-ng-3.3.13-build-fails-due-libio.patch @@ -0,0 +1,11 @@ +diff -up ./procio.c.ori ./procio.c +--- ./procio.c.ori 2018-04-05 13:16:16.926741440 +0200 ++++ ./procio.c 2018-04-05 13:16:31.076685287 +0200 +@@ -24,7 +24,6 @@ + #endif + #include + #include +-#include + #include + #include + #include diff --git a/procps-ng-3.3.14-CVE-2018-1124.patch b/procps-ng-3.3.14-CVE-2018-1124.patch new file mode 100644 index 0000000..1207558 --- /dev/null +++ b/procps-ng-3.3.14-CVE-2018-1124.patch @@ -0,0 +1,337 @@ +From 9d2ec74b76d220f5343e548fcb7058d723293a22 Mon Sep 17 00:00:00 2001 +From: Qualys Security Advisory +Date: Thu, 1 Jan 1970 00:00:00 +0000 +Subject: [PATCH 1/3] proc/alloc.*: Use size_t, not unsigned int. + +Otherwise this can truncate sizes on 64-bit platforms, and is one of the +reasons the integer overflows in file2strvec() are exploitable at all. +Also: catch potential integer overflow in xstrdup() (should never +happen, but better safe than sorry), and use memcpy() instead of +strcpy() (faster). + +Warnings: + +- in glibc, realloc(ptr, 0) is equivalent to free(ptr), but not here, + because of the ++size; + +- here, xstrdup() can return NULL (if str is NULL), which goes against + the idea of the xalloc wrappers. + +We were tempted to call exit() or xerrx() in those cases, but decided +against it, because it might break things in unexpected places; TODO? +--- + proc/alloc.c | 20 ++++++++++++-------- + proc/alloc.h | 4 ++-- + 2 files changed, 14 insertions(+), 10 deletions(-) + +diff --git a/proc/alloc.c b/proc/alloc.c +index 94af47f..1768d73 100644 +--- a/proc/alloc.c ++++ b/proc/alloc.c +@@ -37,14 +37,14 @@ static void xdefault_error(const char *restrict fmts, ...) { + message_fn xalloc_err_handler = xdefault_error; + + +-void *xcalloc(unsigned int size) { ++void *xcalloc(size_t size) { + void * p; + + if (size == 0) + ++size; + p = calloc(1, size); + if (!p) { +- xalloc_err_handler("%s failed to allocate %u bytes of memory", __func__, size); ++ xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size); + exit(EXIT_FAILURE); + } + return p; +@@ -57,20 +57,20 @@ void *xmalloc(size_t size) { + ++size; + p = malloc(size); + if (!p) { +- xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size); ++ xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size); + exit(EXIT_FAILURE); + } + return(p); + } + +-void *xrealloc(void *oldp, unsigned int size) { ++void *xrealloc(void *oldp, size_t size) { + void *p; + + if (size == 0) + ++size; + p = realloc(oldp, size); + if (!p) { +- xalloc_err_handler("%s failed to allocate %u bytes of memory", __func__, size); ++ xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size); + exit(EXIT_FAILURE); + } + return(p); +@@ -80,13 +80,17 @@ char *xstrdup(const char *str) { + char *p = NULL; + + if (str) { +- unsigned int size = strlen(str) + 1; ++ size_t size = strlen(str) + 1; ++ if (size < 1) { ++ xalloc_err_handler("%s refused to allocate %zu bytes of memory", __func__, size); ++ exit(EXIT_FAILURE); ++ } + p = malloc(size); + if (!p) { +- xalloc_err_handler("%s failed to allocate %u bytes of memory", __func__, size); ++ xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size); + exit(EXIT_FAILURE); + } +- strcpy(p, str); ++ memcpy(p, str, size); + } + return(p); + } +diff --git a/proc/alloc.h b/proc/alloc.h +index 19c91d7..6787a72 100644 +--- a/proc/alloc.h ++++ b/proc/alloc.h +@@ -10,9 +10,9 @@ typedef void (*message_fn)(const char *__restrict, ...) __attribute__((format(pr + /* change xalloc_err_handler to override the default fprintf(stderr... */ + extern message_fn xalloc_err_handler; + +-extern void *xcalloc(unsigned int size) MALLOC; ++extern void *xcalloc(size_t size) MALLOC; + extern void *xmalloc(size_t size) MALLOC; +-extern void *xrealloc(void *oldp, unsigned int size) MALLOC; ++extern void *xrealloc(void *oldp, size_t size) MALLOC; + extern char *xstrdup(const char *str) MALLOC; + + EXTERN_C_END +-- +2.14.3 + + +From de660b14b80188d9b323c4999d1b91a9456ed687 Mon Sep 17 00:00:00 2001 +From: Qualys Security Advisory +Date: Thu, 1 Jan 1970 00:00:00 +0000 +Subject: [PATCH 2/3] proc/readproc.c: Harden file2str(). + +1/ Replace sprintf() with snprintf() (and check for truncation). + +2/ Prevent an integer overflow of ub->siz. The "tot_read--" is needed to +avoid an off-by-one overflow in "ub->buf[tot_read] = '\0'". It is safe +to decrement tot_read here, because we know that tot_read is equal to +ub->siz (and ub->siz is very large). + +We believe that truncation is a better option than failure (implementing +failure instead should be as easy as replacing the "tot_read--" with +"tot_read = 0"). +--- + proc/readproc.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/proc/readproc.c b/proc/readproc.c +index 9e3afc9..39235c7 100644 +--- a/proc/readproc.c ++++ b/proc/readproc.c +@@ -35,6 +35,7 @@ + #include + #include + #include ++#include + #include + #include + #ifdef WITH_SYSTEMD +@@ -635,7 +636,7 @@ static void statm2proc(const char* s, proc_t *restrict P) { + static int file2str(const char *directory, const char *what, struct utlbuf_s *ub) { + #define buffGRW 1024 + char path[PROCPATHLEN]; +- int fd, num, tot_read = 0; ++ int fd, num, tot_read = 0, len; + + /* on first use we preallocate a buffer of minimum size to emulate + former 'local static' behavior -- even if this read fails, that +@@ -643,11 +644,16 @@ static int file2str(const char *directory, const char *what, struct utlbuf_s *ub + ( besides, with this xcalloc we will never need to use memcpy ) */ + if (ub->buf) ub->buf[0] = '\0'; + else ub->buf = xcalloc((ub->siz = buffGRW)); +- sprintf(path, "%s/%s", directory, what); ++ len = snprintf(path, sizeof path, "%s/%s", directory, what); ++ if (len <= 0 || (size_t)len >= sizeof path) return -1; + if (-1 == (fd = open(path, O_RDONLY, 0))) return -1; + while (0 < (num = read(fd, ub->buf + tot_read, ub->siz - tot_read))) { + tot_read += num; + if (tot_read < ub->siz) break; ++ if (ub->siz >= INT_MAX - buffGRW) { ++ tot_read--; ++ break; ++ } + ub->buf = xrealloc(ub->buf, (ub->siz += buffGRW)); + }; + ub->buf[tot_read] = '\0'; +-- +2.14.3 + + +From 44a4b658f45bc3fbd7170662a52038a7b35c83de Mon Sep 17 00:00:00 2001 +From: Qualys Security Advisory +Date: Thu, 1 Jan 1970 00:00:00 +0000 +Subject: [PATCH 3/3] proc/readproc.c: Fix bugs and overflows in file2strvec(). + +Note: this is by far the most important and complex patch of the whole +series, please review it carefully; thank you very much! + +For this patch, we decided to keep the original function's design and +skeleton, to avoid regressions and behavior changes, while fixing the +various bugs and overflows. And like the "Harden file2str()" patch, this +patch does not fail when about to overflow, but truncates instead: there +is information available about this process, so return it to the caller; +also, we used INT_MAX as a limit, but a lower limit could be used. + +The easy changes: + +- Replace sprintf() with snprintf() (and check for truncation). + +- Replace "if (n == 0 && rbuf == 0)" with "if (n <= 0 && tot <= 0)" and + do break instead of return: it simplifies the code (only one place to + handle errors), and also guarantees that in the while loop either n or + tot is > 0 (or both), even if n is reset to 0 when about to overflow. + +- Remove the "if (n < 0)" block in the while loop: it is (and was) dead + code, since we enter the while loop only if n >= 0. + +- Rewrite the missing-null-terminator detection: in the original + function, if the size of the file is a multiple of 2047, a null- + terminator is appended even if the file is already null-terminated. + +- Replace "if (n <= 0 && !end_of_file)" with "if (n < 0 || tot <= 0)": + originally, it was equivalent to "if (n < 0)", but we added "tot <= 0" + to handle the first break of the while loop, and to guarantee that in + the rest of the function tot is > 0. + +- Double-force ("belt and suspenders") the null-termination of rbuf: + this is (and was) essential to the correctness of the function. + +- Replace the final "while" loop with a "for" loop that behaves just + like the preceding "for" loop: in the original function, this would + lead to unexpected results (for example, if rbuf is |\0|A|\0|, this + would return the array {"",NULL} but should return {"","A",NULL}; and + if rbuf is |A|\0|B| (should never happen because rbuf should be null- + terminated), this would make room for two pointers in ret, but would + write three pointers to ret). + +The hard changes: + +- Prevent the integer overflow of tot in the while loop, but unlike + file2str(), file2strvec() cannot let tot grow until it almost reaches + INT_MAX, because it needs more space for the pointers: this is why we + introduced ARG_LEN, which also guarantees that we can add "align" and + a few sizeof(char*)s to tot without overflowing. + +- Prevent the integer overflow of "tot + c + align": when INT_MAX is + (almost) reached, we write the maximal safe amount of pointers to ret + (ARG_LEN guarantees that there is always space for *ret = rbuf and the + NULL terminator). +--- + proc/readproc.c | 53 ++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 32 insertions(+), 21 deletions(-) + +diff --git a/proc/readproc.c b/proc/readproc.c +index 39235c7..94ca4e9 100644 +--- a/proc/readproc.c ++++ b/proc/readproc.c +@@ -665,11 +665,12 @@ static int file2str(const char *directory, const char *what, struct utlbuf_s *ub + + static char** file2strvec(const char* directory, const char* what) { + char buf[2048]; /* read buf bytes at a time */ +- char *p, *rbuf = 0, *endbuf, **q, **ret; ++ char *p, *rbuf = 0, *endbuf, **q, **ret, *strp; + int fd, tot = 0, n, c, end_of_file = 0; + int align; + +- sprintf(buf, "%s/%s", directory, what); ++ const int len = snprintf(buf, sizeof buf, "%s/%s", directory, what); ++ if(len <= 0 || (size_t)len >= sizeof buf) return NULL; + fd = open(buf, O_RDONLY, 0); + if(fd==-1) return NULL; + +@@ -677,18 +678,23 @@ static char** file2strvec(const char* directory, const char* what) { + while ((n = read(fd, buf, sizeof buf - 1)) >= 0) { + if (n < (int)(sizeof buf - 1)) + end_of_file = 1; +- if (n == 0 && rbuf == 0) { +- close(fd); +- return NULL; /* process died between our open and read */ ++ if (n <= 0 && tot <= 0) { /* nothing read now, nothing read before */ ++ break; /* process died between our open and read */ + } +- if (n < 0) { +- if (rbuf) +- free(rbuf); +- close(fd); +- return NULL; /* read error */ ++ /* ARG_LEN is our guesstimated median length of a command-line argument ++ or environment variable (the minimum is 1, the maximum is 131072) */ ++ #define ARG_LEN 64 ++ if (tot >= INT_MAX / (ARG_LEN + (int)sizeof(char*)) * ARG_LEN - n) { ++ end_of_file = 1; /* integer overflow: null-terminate and break */ ++ n = 0; /* but tot > 0 */ + } +- if (end_of_file && (n == 0 || buf[n-1]))/* last read char not null */ ++ #undef ARG_LEN ++ if (end_of_file && ++ ((n > 0 && buf[n-1] != '\0') || /* last read char not null */ ++ (n <= 0 && rbuf[tot-1] != '\0'))) /* last read char not null */ + buf[n++] = '\0'; /* so append null-terminator */ ++ ++ if (n <= 0) break; /* unneeded (end_of_file = 1) but avoid realloc */ + rbuf = xrealloc(rbuf, tot + n); /* allocate more memory */ + memcpy(rbuf + tot, buf, n); /* copy buffer into it */ + tot += n; /* increment total byte ctr */ +@@ -696,29 +702,34 @@ static char** file2strvec(const char* directory, const char* what) { + break; + } + close(fd); +- if (n <= 0 && !end_of_file) { ++ if (n < 0 || tot <= 0) { /* error, or nothing read */ + if (rbuf) free(rbuf); + return NULL; /* read error */ + } ++ rbuf[tot-1] = '\0'; /* belt and suspenders (the while loop did it, too) */ + endbuf = rbuf + tot; /* count space for pointers */ + align = (sizeof(char*)-1) - ((tot + sizeof(char*)-1) & (sizeof(char*)-1)); +- for (c = 0, p = rbuf; p < endbuf; p++) { +- if (!*p || *p == '\n') ++ c = sizeof(char*); /* one extra for NULL term */ ++ for (p = rbuf; p < endbuf; p++) { ++ if (!*p || *p == '\n') { ++ if (c >= INT_MAX - (tot + (int)sizeof(char*) + align)) break; + c += sizeof(char*); ++ } + if (*p == '\n') + *p = 0; + } +- c += sizeof(char*); /* one extra for NULL term */ + + rbuf = xrealloc(rbuf, tot + c + align); /* make room for ptrs AT END */ + endbuf = rbuf + tot; /* addr just past data buf */ + q = ret = (char**) (endbuf+align); /* ==> free(*ret) to dealloc */ +- *q++ = p = rbuf; /* point ptrs to the strings */ +- endbuf--; /* do not traverse final NUL */ +- while (++p < endbuf) +- if (!*p) /* NUL char implies that */ +- *q++ = p+1; /* next string -> next char */ +- ++ for (strp = p = rbuf; p < endbuf; p++) { ++ if (!*p) { /* NUL char implies that */ ++ if (c < 2 * (int)sizeof(char*)) break; ++ c -= sizeof(char*); ++ *q++ = strp; /* point ptrs to the strings */ ++ strp = p+1; /* next string -> next char */ ++ } ++ } + *q = 0; /* null ptr list terminator */ + return ret; + } +-- +2.14.3 + diff --git a/procps-ng.spec b/procps-ng.spec new file mode 100644 index 0000000..e54cd8a --- /dev/null +++ b/procps-ng.spec @@ -0,0 +1,425 @@ +# The testsuite is unsuitable for running on buildsystems +%global tests_enabled 0 + +Summary: System and process monitoring utilities +Name: procps-ng +Version: 3.3.16 +Release: 1%{?dist} +License: GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+ +URL: https://sourceforge.net/projects/procps-ng/ + +Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz +# README files are missing in latest tarball +# wget https://gitlab.com/procps-ng/procps/raw/e0784ddaed30d095bb1d9a8ad6b5a23d10a212c4/README.md +Source1: README.md +# wget https://gitlab.com/procps-ng/procps/raw/e0784ddaed30d095bb1d9a8ad6b5a23d10a212c4/top/README.top +Source2: README.top + +Patch1: pidof-show-worker-threads.patch + +BuildRequires: ncurses-devel +BuildRequires: libtool +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: gcc +BuildRequires: gettext-devel +BuildRequires: systemd-devel +BuildRequires: git + +%if %{tests_enabled} +BuildRequires: dejagnu +%endif + +Provides: procps = %{version}-%{release} +Obsoletes: procps < 3.2.9-1 + +# usrmove hack - will be removed once initscripts are fixed +Provides: /sbin/sysctl +Provides: /bin/ps + + +%description +The procps package contains a set of system utilities that provide +system information. Procps includes ps, free, skill, pkill, pgrep, +snice, tload, top, uptime, vmstat, pidof, pmap, slabtop, w, watch +and pwdx. +The ps command displays a snapshot of running processes. The top command +provides a repetitive update of the statuses of running processes. +The free command displays the amounts of free and used memory on your +system. The skill command sends a terminate command (or another +specified signal) to a specified set of processes. The snice +command is used to change the scheduling priority of specified +processes. The tload command prints a graph of the current system +load average to a specified tty. The uptime command displays the +current time, how long the system has been running, how many users +are logged on, and system load averages for the past one, five, +and fifteen minutes. The w command displays a list of the users +who are currently logged on and what they are running. The watch +program watches a running program. The vmstat command displays +virtual memory statistics about processes, memory, paging, block +I/O, traps, and CPU activity. The pwdx command reports the current +working directory of a process or processes. + +%package devel +Summary: System and process monitoring utilities +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: procps-devel = %{version}-%{release} +Obsoletes: procps-devel < 3.2.9-1 + +%description devel +System and process monitoring utilities development headers + +%package i18n +Summary: Internationalization pack for procps-ng +Requires: %{name} = %{version}-%{release} +BuildArch: noarch + +# fortunately the same release number for f21 and f22 +Conflicts: man-pages-de < 1.7-3 +Conflicts: man-pages-fr < 3.66-3 +Conflicts: man-pages-pl < 0.7-5 + +%description i18n +Internationalization pack for procps-ng + +%prep +%autosetup -S git +cp -p %{SOURCE1} . +cp -p %{SOURCE2} top/ + +%build +# The following stuff is needed for git archives only +#echo "%{version}" > .tarball-version +#./autogen.sh + +autoreconf --verbose --force --install + +%configure \ + --exec-prefix=/ \ + --docdir=/unwanted \ + --disable-static \ + --disable-w-from \ + --disable-kill \ + --enable-watch8bit \ + --enable-skill \ + --enable-sigwinch \ + --enable-libselinux \ + --with-systemd \ + --disable-modern-top + +make CFLAGS="%{optflags}" + + +%if %{tests_enabled} +%check +make check +%endif + + +%install +%make_install + +# translated man pages +find man-po/ -type d -maxdepth 1 -mindepth 1 | while read dirname; do cp -a $dirname %{buildroot}%{_mandir}/ ; done +rm -f %{buildroot}%{_mandir}/translate/{de,fr,pl,pt_BR,sv,uk}/kill.1 + +%find_lang %{name} --all-name --with-man + +ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof + +%ldconfig_scriptlets + +%files +%doc AUTHORS Documentation/bugs.md Documentation/FAQ NEWS README.md top/README.top Documentation/TODO +%{!?_licensedir:%global license %%doc} +%license COPYING COPYING.LIB +%{_libdir}/libprocps.so.* +%{_bindir}/* +%{_sbindir}/* +%{_mandir}/man1/* +%{_mandir}/man8/* +%{_mandir}/man5/* + + +%exclude %{_libdir}/libprocps.la +%exclude /unwanted/* + +%files devel +%{!?_licensedir:%global license %%doc} +%license COPYING COPYING.LIB +%{_libdir}/libprocps.so +%{_libdir}/pkgconfig/libprocps.pc +%{_includedir}/proc +%{_mandir}/man3/* + +%files i18n -f %{name}.lang +%exclude %{_mandir}/translated/* + +%changelog +* Tue Aug 18 2020 Jan Rybar - 3.3.16-1 +- Rebase to newest upstream version + +* Tue Jul 28 2020 Fedora Release Engineering - 3.3.15-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jul 24 2020 Jan Rybar - 3.3.15-8 +- pidof: show PIDs for kernel worker threads + +* Tue Jul 14 2020 Tom Stellard - 3.3.15-8 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Thu Jan 30 2020 Fedora Release Engineering - 3.3.15-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 3.3.15-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 3.3.15-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 3.3.15-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jul 02 2018 Jan Rybar - 3.3.15-3 +- Translated manual pages moved to i18n subpackage +- Spec file cleanup + +* Thu Jun 14 2018 Jan Rybar - 3.3.15-2 +- General rebuild after commit revert + +* Wed Jun 06 2018 Jan Rybar - 3.3.15-1 +- Rebase to 3.3.15 (contains a LOT of CVE fixes) +- Manpage translations temporarily unavailable + +* Fri May 18 2018 Kamil Dudka - 3.3.14-2 +- fix integer overflows leading to heap overflow (CVE-2018-1124 CVE-2018-1126) + +* Mon Apr 16 2018 Jan Rybar - 3.3.14-1 +- Rebase to 3.3.14 +- Translated man-pages returned + +* Thu Apr 05 2018 Jan Rybar - 3.3.13-2 +- Build fails due to removal of libio.h from glibc-headers +- Translated manpages deactivated since missing from 3.3.13 tarball + +* Tue Apr 03 2018 Jan Rybar - 3.3.13-1 +- Rebase to 3.3.13 + +* Mon Feb 26 2018 Jan Rybar - 3.3.12-2 +- ps: LUID (LoginID) format option available + +* Wed Feb 21 2018 Michael Cronenworth - 3.3.12-1 +- Upgrading to 3.3.12 + +* Fri Feb 09 2018 Igor Gnatenko - 3.3.10-18 +- Escape macros in %%changelog + +* Fri Feb 09 2018 Fedora Release Engineering - 3.3.10-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 3.3.10-16 +- Switch to %%ldconfig_scriptlets + +* Thu Aug 03 2017 Fedora Release Engineering - 3.3.10-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 3.3.10-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 3.3.10-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Nov 28 2016 Lubomir Rintel - 3.3.10-12 +- Fix FTBFS with new systemd + +* Thu Feb 04 2016 Fedora Release Engineering - 3.3.10-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jan 14 2016 Jaromir Capik - 3.3.10-10 +- Enhancing find_elf_note to allow calling lib functions with dlopen (#1287752) + +* Fri Aug 14 2015 Adam Jackson 3.3.10-9 +- Use %%configure so the hardened cflags get applied correctly + +* Mon Aug 10 2015 Jaromir Capik - 3.3.10-8 +- Fixing crashes in 'top' when a deep forking appears (#1153642) + +* Thu Jun 18 2015 Fedora Release Engineering - 3.3.10-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Feb 21 2015 Till Maas - 3.3.10-6 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Tue Nov 25 2014 Jaromir Capik - 3.3.10-5 +- Fixing locale dirs ownership (#1167443) + +* Mon Oct 20 2014 Jaromir Capik - 3.3.10-4 +- Bringing the old 'top' defaults back (#1153049) + +* Mon Oct 06 2014 Jaromir Capik - 3.3.10-3 +- Resolving file conflicts with man-pages-* +- Replacing hardcoded paths with macros +- Making the i18n subpackage noarch + +* Tue Sep 30 2014 Jaromir Capik - 3.3.10-2 +- Removing explicit dependency on systemd-libs +- Removing /etc/sysctl.d (ownership quietly stolen by systemd) + +* Tue Sep 09 2014 Jaromir Capik - 3.3.10-1 +- Upgrading to 3.3.10 + +* Sun Aug 17 2014 Fedora Release Engineering - 3.3.9-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Thu Jul 31 2014 Tom Callaway - 3.3.9-11 +- fix license handling + +* Sat Jun 07 2014 Fedora Release Engineering - 3.3.9-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Apr 30 2014 Jaromir Capik - 3.3.9-9 +- Dropping Cached -= Shmem (#963799) + +* Tue Apr 08 2014 Jaromir Capik - 3.3.9-8 +- Documenting the 't' process state code in the ps manual (#946864) + +* Fri Mar 14 2014 Jaromir Capik - 3.3.9-7 +- Fixing sysctl line length limit (#1071530) + +* Thu Feb 27 2014 Jaromir Capik - 3.3.9-6 +- Subtracting Shmem from Cached (#1070736) + +* Wed Feb 05 2014 Jaromir Capik - 3.3.9-5 +- Support for timestamps & wide diskstat (#1053428, #1025833) +- Fixing fd leak in watch +- Fixing format-security build issues + +* Fri Jan 24 2014 Jaromir Capik - 3.3.9-4 +- Skipping trailing zeros in read_unvectored (#1057600) + +* Mon Jan 20 2014 Jaromir Capik - 3.3.9-3 +- 'vmstat -w' was not wide enough (#1025833) + +* Tue Jan 07 2014 Jaromir Capik - 3.3.9-2 +- Replacing the /sbin/pidof wrapper with symlink + +* Tue Dec 03 2013 Jaromir Capik - 3.3.9-1 +- Update to 3.3.9 + +* Mon Nov 04 2013 Jaromir Capik - 3.3.8-17 +- Fixing pidof compilation warnings +- RPM workaround - changing sysvinit-tools Conflicts/Obsoletes (#1026504) + +* Wed Oct 16 2013 Jaromir Capik - 3.3.8-16 +- Introducing pidof (#987064) + +* Tue Sep 17 2013 Aristeu Rozanski - 3.3.8-15 +- Introduce namespaces support (#1016242) + +* Tue Sep 17 2013 Jaromir Capik - 3.3.8-14 +- top: Fixing missing newline when running in the batch mode (#1008674) + +* Fri Aug 09 2013 Jaromir Capik - 3.3.8-13 +- Including forgotten man fixes (#948522) + +* Wed Aug 07 2013 Jaromir Capik - 3.3.8-12 +- Fixing the license tag + +* Wed Aug 07 2013 Jaromir Capik - 3.3.8-11 +- Support for libselinux (#975459) +- Support for systemd (#994457) +- Support for 'Shmem' in free (#993271) + +* Sun Aug 04 2013 Fedora Release Engineering - 3.3.8-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Jul 19 2013 Jaromir Capik - 3.3.8-9 +- RH man page scan (#948522) + +* Tue Jul 02 2013 Jaromir Capik - 3.3.8-8 +- Extending the end-of-job patch disabling the screen content restoration + +* Mon Jul 01 2013 Jaromir Capik - 3.3.8-7 +- Disabling screen content restoration when exiting 'top' (#977561) +- Enabling SIGWINCH flood prevention + +* Wed Jun 26 2013 Jaromir Capik - 3.3.8-6 +- Avoiding "write error" messages when piping to grep (#976199) + +* Wed Jun 26 2013 Jaromir Capik - 3.3.8-5 +- Disabling tests - unsuitable for running on buildsystems + +* Mon Jun 17 2013 Jaromir Capik - 3.3.8-4 +- Enabling skill and snice (#974752) + +* Wed Jun 12 2013 Jaromir Capik - 3.3.8-3 +- Adding major version in the libnuma soname + +* Thu May 30 2013 Jaromir Capik - 3.3.8-2 +- watch: enabling UTF-8 (#965867) + +* Wed May 29 2013 Jaromir Capik - 3.3.8-1 +- Update to 3.3.8 + +* Wed May 22 2013 Jaromir Capik - 3.3.7-4 +- top: inoculated against a window manager like 'screen' (#962022) + +* Tue Apr 16 2013 Jaromir Capik - 3.3.7-3 +- Avoid segfaults when reading zero bytes - file2str (#951391) + +* Mon Apr 15 2013 Jaromir Capik - 3.3.7-2 +- Moving libprocps.pc to the devel subpackage (#951726) + +* Tue Mar 26 2013 Jaromir Capik - 3.3.7-1 +- Update to 3.3.7 +- Reverting upstream commit for testsuite/unix.exp + +* Tue Feb 05 2013 Jaromir Capik - 3.3.6-4 +- Fixing empty pmap output on ppc/s390 (#906457) + +* Tue Jan 15 2013 Jaromir Capik - 3.3.6-3 +- Typo in the description, pdwx instead of pwdx (#891476) + +* Tue Jan 08 2013 Jaromir Capik - 3.3.6-2 +- Rebuilding with tests disabled (koji issue #853084) + +* Tue Jan 08 2013 Jaromir Capik - 3.3.6-1 +- Update to 3.3.6 +- Changing URL/Source from gitorious to recently created sourceforge page +- Replacing autogen.sh with autoreconf + +* Mon Jan 07 2013 Jaromir Capik - 3.3.5-1 +- Update to 3.3.5 + +* Tue Dec 11 2012 Jaromir Capik - 3.3.4-2 +- fixing the following regressions: +- negative ETIME field in ps (#871819) +- procps states a bug is hit when receiving a signal (#871824) +- allow core file generation by ps command (#871825) + +* Tue Dec 11 2012 Jaromir Capik - 3.3.4-1 +- Update to 3.3.4 + +* Tue Sep 25 2012 Jaromir Capik - 3.3.3-3.20120807git +- SELinux spelling fixes (#859900) + +* Tue Aug 21 2012 Jaromir Capik - 3.3.3-2.20120807git +- Tests enabled + +* Tue Aug 07 2012 Jaromir Capik - 3.3.3-1.20120807git +- Update to 3.3.3-20120807git + +* Sat Jul 21 2012 Fedora Release Engineering - 3.3.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Mar 08 2012 Jaromir Capik - 3.3.2-3 +- Second usrmove hack - providing /bin/ps + +* Tue Mar 06 2012 Jaromir Capik - 3.3.2-2 +- Fixing requires in the devel subpackage (missing %%{?_isa} macro) +- License statement clarification (upstream patch referrenced in the spec header) + +* Mon Feb 27 2012 Jaromir Capik - 3.3.2-1 +- Initial version diff --git a/sources b/sources new file mode 100644 index 0000000..a0df5a4 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (procps-ng-3.3.16.tar.xz) = d83da472df256b188c32082632202e7f8ebd1b161082387760876ae34d50221b3682299a2816a7d6a29afb40322743c31b87d92ca299c2944a6b55e50736d367