Hello community, here is the log from the commit of package procps for openSUSE:Factory checked in at 2018-06-22 13:11:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/procps (Old) and /work/SRC/openSUSE:Factory/.procps.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "procps" Fri Jun 22 13:11:14 2018 rev:112 rq:614832 version:3.3.15 Changes: -------- --- /work/SRC/openSUSE:Factory/procps/procps.changes 2018-04-26 13:21:37.296143577 +0200 +++ /work/SRC/openSUSE:Factory/.procps.new/procps.changes 2018-06-22 13:11:23.979901060 +0200 @@ -1,0 +2,25 @@ +Wed Jun 6 10:56:31 UTC 2018 - [email protected] + +- Reference patch procps-ng-3.3.15-typo.patch this patch add a + missed parenthesis for a nroff macro that is \*We become \*(We + in line 2186 of top/top.1 + +------------------------------------------------------------------- +Tue Jun 5 09:24:20 UTC 2018 - [email protected] + +- Update to procps-ng-3.3.15 (bsc#1092100) + * library: Increment to 8:0:1 + No removals, no new functions + Changes: slab and pid structures + * library: Just check for SIGLOST and don't delete it issue #93 + * library: Fix integer overflow and LPE in file2strvec CVE-2018-1124 + * library: Use size_t for alloc functions CVE-2018-1126 + * library: Increase comm size to 64 + * pgrep: Fix stack-based buffer overflow CVE-2018-1125 + * pgrep: Remove >15 warning as comm can be longer issue #92 + * ps: Fix buffer overflow in output buffer, causing DOS CVE-2018-1123 + * ps: Increase command name selection field to 64 + * top: Don't use cwd for location of config CVE-2018-1122 +- Increase so major number + +------------------------------------------------------------------- Old: ---- procps-ng-3.3.14.tar.xz New: ---- procps-ng-3.3.15-typo.patch procps-ng-3.3.15.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ procps.spec ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:24.691874655 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:24.691874655 +0200 @@ -16,20 +16,20 @@ # -%define somajor 6 +%define somajor 7 %define libname libprocps%{somajor} %bcond_with bin2usr %bcond_with pidof Name: procps -Version: 3.3.14 +Version: 3.3.15 Release: 0 Summary: The ps utilities for /proc -#Alternate: https://gitlab.com/procps-ng/procps/repository/archive.tar.bz2?ref=v3.3.14 +#Alternate: https://gitlab.com/procps-ng/procps/repository/archive.tar.bz2?ref=v3.3.15 #Also: http://gitorious.org/procps/ License: GPL-2.0-or-later AND LGPL-2.1-or-later Group: System/Monitoring Url: http://sf.net/projects/procps-ng/ -Source: http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3.14.tar.xz +Source: http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3.15.tar.xz Source1: procps-rpmlintrc Patch0: procps-ng-3.3.9-watch.patch Patch1: procps-v3.3.3-ia64.diff @@ -57,6 +57,8 @@ Patch32: procps-ng-3.3.10-errno.patch # PATCH-FEATURE-SUSE -- Let upstream pmap behave simialr to old suse pmap Patch33: procps-ng-3.3.11-pmap4suse.patch +# PATCH-TYPO-SUSE +Patch34: procps-ng-3.3.15-typo.patch BuildRequires: automake BuildRequires: dejagnu @@ -144,7 +146,8 @@ %patch28 %patch31 -p1 %patch32 -%patch33 +%patch33 -b .pmap4us +%patch34 %build # ++++++ procps-ng-3.3.10-bnc634071_procstat2.diff ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:24.711873914 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:24.711873914 +0200 @@ -16,7 +16,7 @@ tty_to_dev; --- proc/sysinfo.c +++ proc/sysinfo.c 2018-04-04 11:33:26.306886237 +0000 -@@ -45,7 +45,8 @@ +@@ -47,7 +47,8 @@ #endif #include <elf.h> @@ -26,7 +26,7 @@ long page_bytes; /* this architecture's page size */ #define BAD_OPEN_MESSAGE \ -@@ -1152,7 +1153,11 @@ out: +@@ -1166,7 +1167,11 @@ out: /////////////////////////////////////////////////////////////////////////// @@ -39,7 +39,7 @@ // ought to count CPUs in /proc/stat instead of relying // on glibc, which foolishly tries to parse /proc/cpuinfo // note: that may have been the case but now /proc/stat -@@ -1167,4 +1172,8 @@ void cpuinfo (void) { +@@ -1181,4 +1186,8 @@ void cpuinfo (void) { smp_num_cpus = sysconf(_SC_NPROCESSORS_ONLN); if (smp_num_cpus<1) /* SPARC glibc is buggy */ smp_num_cpus=1; ++++++ procps-ng-3.3.10-integer-overflow.patch ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:24.723873468 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:24.723873468 +0200 @@ -47,7 +47,7 @@ } --- proc/sysinfo.c +++ proc/sysinfo.c 2018-04-04 11:17:32.480409601 +0000 -@@ -781,7 +781,10 @@ nextline: +@@ -783,7 +783,10 @@ nextline: kb_main_cached = kb_page_cache + kb_slab_reclaimable; if ((ev=getenv("PS_FULL_CACHE"))) kb_main_cached += kb_swap_cached + kb_nfs_unstable; ++++++ procps-ng-3.3.10-large_pcpu.patch ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:24.731873172 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:24.731873172 +0200 @@ -4,7 +4,7 @@ --- top/top.c +++ top/top.c 2018-04-04 12:09:16.087193018 +0000 -@@ -2458,7 +2458,11 @@ static void zap_fieldstab (void) { +@@ -2478,7 +2478,11 @@ static void zap_fieldstab (void) { Cpu_pmax = 99.9; if (Rc.mode_irixps && smp_num_cpus > 1 && !Thread_mode) { Cpu_pmax = 100.0 * smp_num_cpus; ++++++ procps-ng-3.3.10-slab.patch ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:24.743872727 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:24.743872727 +0200 @@ -67,7 +67,7 @@ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public -@@ -698,6 +699,7 @@ void meminfo(void){ +@@ -700,6 +701,7 @@ void meminfo(void){ int linux_version_code = procps_linux_version(); mem_table_struct findme = { namebuf, NULL}; mem_table_struct *found; @@ -75,7 +75,7 @@ char *head; char *tail; static const mem_table_struct mem_table[] = { -@@ -777,6 +779,8 @@ nextline: +@@ -779,6 +781,8 @@ nextline: kb_inactive = kb_inact_dirty + kb_inact_clean + kb_inact_laundry; } kb_main_cached = kb_page_cache + kb_slab_reclaimable; ++++++ procps-ng-3.3.11-pmap4suse.patch ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:24.755872282 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:24.759872134 +0200 @@ -1,11 +1,11 @@ --- - pmap.c | 48 ++++++++++++++++++++++++++++++++----------- + pmap.c | 47 ++++++++++++++++++++++++++++++++----------- testsuite/pmap.test/pmap.exp | 17 +++++++-------- - 2 files changed, 44 insertions(+), 21 deletions(-) + 2 files changed, 44 insertions(+), 20 deletions(-) --- pmap.c -+++ pmap.c 2018-04-04 12:52:03.219187662 +0000 -@@ -48,7 +48,9 @@ const char *nls_Address, ++++ pmap.c 2018-06-05 09:37:34.404294888 +0000 +@@ -49,7 +49,9 @@ const char *nls_Address, *nls_Kbytes, *nls_Mode, *nls_RSS, @@ -16,7 +16,7 @@ static void nls_initialize(void) { -@@ -72,7 +74,9 @@ static void nls_initialize(void) +@@ -73,7 +75,9 @@ static void nls_initialize(void) nls_Kbytes = _("Kbytes"); nls_Mode = _("Mode"); nls_RSS = _("RSS"); @@ -26,7 +26,7 @@ } static int justify_print(const char *str, int width, int right) -@@ -140,10 +144,10 @@ static int d_option; +@@ -141,10 +145,10 @@ static int d_option; static int n_option; static int N_option; static int q_option; @@ -39,8 +39,8 @@ static unsigned shm_minor = ~0u; -@@ -521,12 +525,17 @@ static int one_proc(proc_t * p) - unsigned KLONG diff = 0; +@@ -522,12 +526,17 @@ static int one_proc(const proc_t * p) + char perms[32] = ""; const char *cp2 = NULL; unsigned long long rss = 0ull; + unsigned long long pss = 0ull; @@ -57,7 +57,7 @@ /* Overkill, but who knows what is proper? The "w" prog uses * the tty width to determine this. -@@ -555,13 +564,15 @@ static int one_proc(proc_t * p) +@@ -557,13 +566,15 @@ static int one_proc(const proc_t * p) if (x_option) { maxw1 = 16; if (sizeof(KLONG) == 4) maxw1 = 8; @@ -74,7 +74,7 @@ maxw5 = justify_print(nls_Mode, maxw5, 0); justify_print(nls_Mapping, 0, 0); } -@@ -603,6 +614,11 @@ static int one_proc(proc_t * p) +@@ -603,6 +614,11 @@ static int one_proc(const proc_t * p) total_rss += smap_value; continue; } @@ -86,15 +86,14 @@ if (strcmp("Shared_Dirty", smap_key) == 0) { shared_dirty = smap_value; total_shared_dirty += smap_value; -@@ -614,16 +630,19 @@ static int one_proc(proc_t * p) - continue; +@@ -615,15 +631,19 @@ static int one_proc(const proc_t * p) } if (strcmp("Swap", smap_key) == 0) { -- /*doesn't matter as long as last */ -- printf("%0*" KLF "x %*lu %*llu %*llu %*s %s\n", + /* doesn't matter as long as last */ +- if (cp2) printf("%0*" KLF "x %*lu %*llu %*llu %*s %s\n", + swap = smap_value; + total_swap += smap_value; -+ printf("%0*" KLF "x %*lu %*llu %*llu %*llu %*llu %*s %s\n", ++ if (cp2) printf("%0*" KLF "x %*lu %*llu %*llu %*llu %*llu %*s %s\n", maxw1, start, maxw2, (unsigned long)(diff >> 10), maxw3, rss, @@ -106,10 +105,10 @@ /* reset some counters */ - rss = shared_dirty = private_dirty = 0ull; + rss = pss = shared_dirty = private_dirty = swap = 0ull; - diff = 0; - continue; - } -@@ -654,7 +673,6 @@ static int one_proc(proc_t * p) + start = diff = end = 0; + perms[0] = '\0'; + cp2 = NULL; +@@ -656,7 +676,6 @@ static int one_proc(const proc_t * p) if (perms[3] == 's') total_shared += diff; if (perms[3] == 'p') { @@ -117,7 +116,7 @@ if (perms[1] == 'w') total_private_writeable += diff; else -@@ -706,17 +724,21 @@ static int one_proc(proc_t * p) +@@ -708,17 +727,21 @@ static int one_proc(const proc_t * p) justify_print("----------------", maxw1, 0); justify_print("-------", maxw2, 1); justify_print("-------", maxw3, 1); @@ -141,7 +140,7 @@ } if (d_option) { printf -@@ -1023,16 +1045,18 @@ int main(int argc, char **argv) +@@ -1028,16 +1051,18 @@ int main(int argc, char **argv) while ((c = getopt_long(argc, argv, "xXrdqA:hVcC:nN:p", longopts, NULL)) != -1) switch (c) { case 'x': @@ -163,7 +162,7 @@ case 'q': q_option = 1; --- testsuite/pmap.test/pmap.exp -+++ testsuite/pmap.test/pmap.exp 2018-04-04 12:47:45.452023967 +0000 ++++ testsuite/pmap.test/pmap.exp 2018-06-05 09:23:53.955370363 +0000 @@ -8,16 +8,16 @@ set pmap_procname "${mypid}:\\s+\\S+\[^\ set pmap_initname "1:\\s+\\S+\[^\\r\]+\\s+" set pmap_std_header $pmap_procname ++++++ procps-ng-3.3.15-typo.patch ++++++ --- top/top.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- top/top.1 +++ top/top.1 2018-06-05 12:46:41.483212158 +0000 @@ -2183,7 +2183,7 @@ While not intended to be edited manually .fi If a valid absolute path to the rcfile cannot be established, customizations -made to a running \*We will be impossible to preserve. +made to a running \*(We will be impossible to preserve. .\" ...................................................................... .SS 6b. ADDING INSPECT Entries ++++++ procps-ng-3.3.14.tar.xz -> procps-ng-3.3.15.tar.xz ++++++ ++++ 23879 lines of diff (skipped) ++++++ procps-ng-3.3.8-accuracy.dif ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:25.163857152 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:25.163857152 +0200 @@ -44,7 +44,7 @@ sort_list = NULL; --- ps/output.c +++ ps/output.c 2018-04-04 11:14:33.915688098 +0000 -@@ -135,6 +135,7 @@ static int sr_ ## NAME (const proc_t* P, +@@ -134,6 +134,7 @@ static int sr_ ## NAME (const proc_t* P, #define cook_time(P) (P->utime + P->stime) / Hertz #define cook_etime(P) (((unsigned long long)seconds_since_boot >= (P->start_time / Hertz)) ? ((unsigned long long)seconds_since_boot - (P->start_time / Hertz)) : 0) @@ -52,7 +52,7 @@ #define CMP_COOKED_TIME(NAME) \ static int sr_ ## NAME (const proc_t* P, const proc_t* Q) { \ -@@ -508,11 +509,11 @@ static int pr_etimes(char *restrict cons +@@ -507,11 +508,11 @@ static int pr_etimes(char *restrict cons static int pr_c(char *restrict const outbuf, const proc_t *restrict const pp){ unsigned long long total_time; /* jiffies used by this process */ unsigned pcpu = 0; /* scaled %cpu, 99 means 99% */ @@ -67,7 +67,7 @@ if (pcpu > 99U) pcpu = 99U; return snprintf(outbuf, COLWID, "%2u", pcpu); } -@@ -520,11 +521,11 @@ static int pr_c(char *restrict const out +@@ -519,11 +520,11 @@ static int pr_c(char *restrict const out static int pr_pcpu(char *restrict const outbuf, const proc_t *restrict const pp){ unsigned long long total_time; /* jiffies used by this process */ unsigned pcpu = 0; /* scaled %cpu, 999 means 99.9% */ @@ -82,7 +82,7 @@ if (pcpu > 999U) return snprintf(outbuf, COLWID, "%u", pcpu/10U); return snprintf(outbuf, COLWID, "%u.%u", pcpu/10U, pcpu%10U); -@@ -533,11 +534,11 @@ static int pr_pcpu(char *restrict const +@@ -532,11 +533,11 @@ static int pr_pcpu(char *restrict const static int pr_cp(char *restrict const outbuf, const proc_t *restrict const pp){ unsigned long long total_time; /* jiffies used by this process */ unsigned pcpu = 0; /* scaled %cpu, 999 means 99.9% */ ++++++ procps-ng-3.3.8-bnc634840.patch ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:25.175856707 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:25.175856707 +0200 @@ -12,7 +12,7 @@ --- top/top.c +++ top/top.c 2018-04-04 11:33:59.278280201 +0000 -@@ -3575,7 +3575,13 @@ static void before (char *me) { +@@ -3600,7 +3600,13 @@ static void before (char *me) { sa.sa_flags = 0; for (i = SIGRTMAX; i; i--) { switch (i) { ++++++ procps-ng-3.3.8-petabytes.patch ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:25.183856410 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:25.187856261 +0200 @@ -4,7 +4,7 @@ --- top/top.c +++ top/top.c 2018-04-04 11:49:56.472660056 +0000 -@@ -1688,9 +1688,9 @@ static inline const char *make_str_utf8 +@@ -1704,9 +1704,9 @@ static inline const char *make_str_utf8 static const char *scale_mem (int target, unsigned long num, int width, int justr) { // SK_Kb SK_Mb SK_Gb SK_Tb SK_Pb SK_Eb #ifdef BOOST_MEMORY @@ -16,7 +16,7 @@ #endif static char buf[SMLBUFSIZ]; float scaled_num; -@@ -1702,7 +1702,7 @@ static const char *scale_mem (int target +@@ -1718,7 +1718,7 @@ static const char *scale_mem (int target goto end_justifies; scaled_num = num; ++++++ procps-ng-3.3.8-readeof.patch ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:25.195855965 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:25.195855965 +0200 @@ -1,89 +1,66 @@ --- - proc/readproc.c | 49 +++++++++++++++++++++++++------------------------ - 1 file changed, 25 insertions(+), 24 deletions(-) + proc/readproc.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) --- proc/readproc.c -+++ proc/readproc.c 2018-04-04 11:13:11.593199324 +0000 -@@ -644,7 +644,7 @@ static int file2str(const char *director - if (ub->buf) ub->buf[0] = '\0'; ++++ proc/readproc.c 2018-06-05 08:54:06.408030693 +0000 +@@ -669,7 +669,7 @@ static int file2str(const char *director 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; + if (-1 == (fd = open(path, O_RDONLY, O_NOATIME))) return -1; while (0 < (num = read(fd, ub->buf + tot_read, ub->siz - tot_read))) { tot_read += num; if (tot_read < ub->siz) break; -@@ -659,41 +659,42 @@ static int file2str(const char *director - +@@ -689,25 +689,25 @@ static int file2str(const char *director 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; -+ char *p, *rbuf = (char*)0, *endbuf, **q, **ret; -+ int fd, c; ++ int fd, c, end_of_file = 0; + ssize_t n, align, tot = 0; - 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); + fd = open(buf, O_RDONLY, O_NOATIME); if(fd==-1) return NULL; /* read whole file into a memory buffer, allocating as we go */ -- while ((n = read(fd, buf, sizeof buf - 1)) >= 0) { + 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 < sizeof buf - 1) + end_of_file = 1; +- if (n <= 0 && tot <= 0) { /* nothing read now, nothing read before */ ++ if (n <= 0 && tot <= 0) /* nothing read now, nothing read before */ + break; /* process died between our open and read */ - } -+ do { -+ n = read(fd, buf, sizeof(buf) - 1); - if (n < 0) { -- if (rbuf) -- free(rbuf); -- close(fd); -- return NULL; /* read error */ -+ tot = 0; -+ break; /* read error! */ -+ } -+ if (n == 0) { -+ if(rbuf == (char*)0) -+ tot = 0; /* process died between our open and read */ -+ break; /* we're done */ - } -- if (end_of_file && (n == 0 || buf[n-1]))/* last read char not null */ -- buf[n++] = '\0'; /* so append null-terminator */ - rbuf = xrealloc(rbuf, tot + n); /* allocate more memory */ - memcpy(rbuf + tot, buf, n); /* copy buffer into it */ - tot += n; /* increment total byte ctr */ -- if (end_of_file) -- break; -- } -+ } while (n >= (sizeof(buf) - 1)); -+ - close(fd); -- if (n <= 0 && !end_of_file) { -+ -+ if (tot == 0) { - if (rbuf) free(rbuf); -- return NULL; /* read error */ -+ return NULL; /* read error */ -+ } -+ if (rbuf[tot-1]) { /* last read char not null */ -+ rbuf = xrealloc(rbuf, tot + 1); /* allocate more memory */ -+ rbuf[tot++] = '\0'; /* and append null-terminator */ - } + - 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++) { -@@ -726,7 +727,7 @@ static int read_unvectored(char *restric - unsigned n = 0; - - snprintf(path, sizeof(path), "%s/%s", whom, what); -- fd = open(path, O_RDONLY); -+ fd = open(path, O_RDONLY, O_NOATIME); - if(fd==-1) return 0; - - for(;;){ + /* 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) { ++ if (tot >= INT_MAX / (ARG_LEN + sizeof(char*)) * ARG_LEN - n) { + end_of_file = 1; /* integer overflow: null-terminate and break */ + n = 0; /* but tot > 0 */ + } +@@ -735,7 +735,7 @@ static char** file2strvec(const char* di + 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; ++ if (c >= INT_MAX - (tot + sizeof(char*) + align)) break; + c += sizeof(char*); + } + if (*p == '\n') +@@ -747,7 +747,7 @@ static char** file2strvec(const char* di + q = ret = (char**) (endbuf+align); /* ==> free(*ret) to dealloc */ + for (strp = p = rbuf; p < endbuf; p++) { + if (!*p) { /* NUL char implies that */ +- if (c < 2 * (int)sizeof(char*)) break; ++ if (c < 2 * sizeof(char*)) break; + c -= sizeof(char*); + *q++ = strp; /* point ptrs to the strings */ + strp = p+1; /* next string -> next char */ ++++++ procps-ng-3.3.8-tinfo.dif ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:25.203855668 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:25.203855668 +0200 @@ -5,7 +5,7 @@ --- Makefile.am +++ Makefile.am 2018-04-04 12:28:14.937957527 +0000 -@@ -165,7 +165,7 @@ else +@@ -164,7 +164,7 @@ else slabtop_LDADD = $(LDADD) @NCURSES_LIBS@ endif ++++++ procps-ng-3.3.9-w-notruncate.diff ++++++ --- /var/tmp/diff_new_pack.I4aJsm/_old 2018-06-22 13:11:25.219855075 +0200 +++ /var/tmp/diff_new_pack.I4aJsm/_new 2018-06-22 13:11:25.219855075 +0200 @@ -4,7 +4,7 @@ 2 files changed, 18 insertions(+), 3 deletions(-) --- w.1 -+++ w.1 2017-04-26 12:31:23.721421873 +0000 ++++ w.1 2018-06-05 07:04:14.040265663 +0000 @@ -36,6 +36,9 @@ and a "w \-u". \fB\-s\fR, \fB\-\-short\fR Use the short format. Don't print the login time, JCPU or PCPU times. @@ -16,8 +16,8 @@ Toggle printing the .B from --- w.c -+++ w.c 2017-04-26 12:23:20.394822856 +0000 -@@ -375,7 +375,7 @@ static const proc_t *getproc(const utmp_ ++++ w.c 2018-06-05 07:04:14.040265663 +0000 +@@ -379,7 +379,7 @@ static const proc_t *getproc(const utmp_ } static void showinfo(utmp_t * u, int formtype, int maxcmd, int from, @@ -26,7 +26,7 @@ { unsigned long long jcpu; int ut_pid_found; -@@ -405,7 +405,13 @@ static void showinfo(utmp_t * u, int for +@@ -409,7 +409,13 @@ static void showinfo(utmp_t * u, int for strncpy(uname, u->ut_user, UT_NAMESIZE); if (formtype) { @@ -41,7 +41,7 @@ if (from) print_from(u, ip_addresses, fromlen); print_logintime(u->ut_time, stdout); -@@ -455,6 +461,7 @@ static void __attribute__ ((__noreturn__ +@@ -459,6 +465,7 @@ static void __attribute__ ((__noreturn__ fputs(_(" -h, --no-header do not print header\n"),out); fputs(_(" -u, --no-current ignore current process username\n"),out); fputs(_(" -s, --short short format\n"),out); @@ -49,7 +49,7 @@ fputs(_(" -f, --from show remote hostname field\n"),out); fputs(_(" -o, --old-style old style output\n"),out); fputs(_(" -i, --ip-addr display IP address instead of hostname (if possible)\n"), out); -@@ -491,6 +498,7 @@ int main(int argc, char **argv) +@@ -495,6 +502,7 @@ int main(int argc, char **argv) {"no-header", no_argument, NULL, 'h'}, {"no-current", no_argument, NULL, 'u'}, {"short", no_argument, NULL, 's'}, @@ -57,7 +57,7 @@ {"from", no_argument, NULL, 'f'}, {"old-style", no_argument, NULL, 'o'}, {"ip-addr", no_argument, NULL, 'i'}, -@@ -512,7 +520,7 @@ int main(int argc, char **argv) +@@ -516,7 +524,7 @@ int main(int argc, char **argv) #endif while ((ch = @@ -66,7 +66,7 @@ switch (ch) { case 'h': header = 0; -@@ -523,6 +531,10 @@ int main(int argc, char **argv) +@@ -527,6 +535,10 @@ int main(int argc, char **argv) case 's': longform = 0; break;
