From b3488a24e541c88cfb0e033b7542291cc2bb4f32 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 12 2020 12:34:44 +0000 Subject: import pcp-4.3.2-7.el7_8 --- diff --git a/SOURCES/redhat-bugzilla-1804146.patch b/SOURCES/redhat-bugzilla-1804146.patch new file mode 100644 index 0000000..a4a9d61 --- /dev/null +++ b/SOURCES/redhat-bugzilla-1804146.patch @@ -0,0 +1,111 @@ +diff -Naurp pcp-4.3.2-orig/src/pcp/atop/atop.c pcp-4.3.2/src/pcp/atop/atop.c +--- pcp-4.3.2-orig/src/pcp/atop/atop.c 2019-03-14 08:01:57.000000000 +1100 ++++ pcp-4.3.2/src/pcp/atop/atop.c 2020-02-19 12:43:05.073078137 +1100 +@@ -632,14 +632,12 @@ engine(void) + */ + if (nprocexit > 0) + { +- curpexit = malloc(nprocexit * sizeof(struct tstat)); ++ curpexit = calloc(nprocexit, sizeof(struct tstat)); + + ptrverify(curpexit, + "Malloc failed for %lu exited processes\n", + nprocexit); + +- memset(curpexit, 0, nprocexit * sizeof(struct tstat)); +- + nprocexit = acctphotoproc(curpexit, nprocexit); + + /* +diff -Naurp pcp-4.3.2-orig/src/pcp/atop/deviate.c pcp-4.3.2/src/pcp/atop/deviate.c +--- pcp-4.3.2-orig/src/pcp/atop/deviate.c 2019-03-08 08:26:34.000000000 +1100 ++++ pcp-4.3.2/src/pcp/atop/deviate.c 2020-02-19 12:43:05.076078101 +1100 +@@ -84,7 +84,7 @@ deviattask(struct tstat *curtpres, un + ** create list for the sample deviations of all tasks + */ + devtstat->ntaskall = ntaskpres + nprocexit; +- devtstat->taskall = malloc(devtstat->ntaskall * sizeof(struct tstat)); ++ devtstat->taskall = calloc(devtstat->ntaskall, sizeof(struct tstat)); + + ptrverify(devtstat->taskall, "Malloc failed for %lu deviated tasks\n", + devtstat->ntaskall); +@@ -371,9 +371,9 @@ deviattask(struct tstat *curtpres, un + /* + ** create and fill other pointer lists + */ +- devtstat->procall = malloc(devtstat->nprocall * ++ devtstat->procall = calloc(devtstat->nprocall, + sizeof(struct tstat *)); +- devtstat->procactive = malloc(devtstat->nprocactive * ++ devtstat->procactive = calloc(devtstat->nprocactive, + sizeof(struct tstat *)); + + ptrverify(devtstat->procall, "Malloc failed for %d processes\n", +diff -Naurp pcp-4.3.2-orig/src/pcp/atop/photoproc.c pcp-4.3.2/src/pcp/atop/photoproc.c +--- pcp-4.3.2-orig/src/pcp/atop/photoproc.c 2019-01-24 10:23:34.000000000 +1100 ++++ pcp-4.3.2/src/pcp/atop/photoproc.c 2020-02-19 12:43:05.076078101 +1100 +@@ -166,8 +166,10 @@ photoproc(struct tstat **tasks, unsigned + fprintf(stderr, "%s: done %lu processes\n", pmGetProgname(), count); + + pmFreeResult(result); +- free(insts); +- free(pids); ++ if (count > 0) { ++ free(insts); ++ free(pids); ++ } + + return count; + } +diff -Naurp pcp-4.3.2-orig/src/pcp/atop/showlinux.c pcp-4.3.2/src/pcp/atop/showlinux.c +--- pcp-4.3.2-orig/src/pcp/atop/showlinux.c 2019-01-24 10:24:56.000000000 +1100 ++++ pcp-4.3.2/src/pcp/atop/showlinux.c 2020-02-19 12:43:05.077078090 +1100 +@@ -654,19 +654,22 @@ totalcap(struct syscap *psc, struct ssta + struct tstat *curstat = *(proclist+i); + count_t nett_wsz; + +- psc->availnet += curstat->net.tcpssz; +- psc->availnet += curstat->net.tcprsz; +- psc->availnet += curstat->net.udpssz; +- psc->availnet += curstat->net.udprsz; +- +- if (curstat->dsk.wsz > curstat->dsk.cwsz) +- nett_wsz = curstat->dsk.wsz - +- curstat->dsk.cwsz; +- else +- nett_wsz = 0; ++ if (curstat) ++ { ++ psc->availnet += curstat->net.tcpssz; ++ psc->availnet += curstat->net.tcprsz; ++ psc->availnet += curstat->net.udpssz; ++ psc->availnet += curstat->net.udprsz; ++ ++ if (curstat->dsk.wsz > curstat->dsk.cwsz) ++ nett_wsz = curstat->dsk.wsz - ++ curstat->dsk.cwsz; ++ else ++ nett_wsz = 0; + +- psc->availdsk += curstat->dsk.rsz; +- psc->availdsk += nett_wsz; ++ psc->availdsk += curstat->dsk.rsz; ++ psc->availdsk += nett_wsz; ++ } + } + + for (psc->availgpumem=i=0; i < sstat->gpu.nrgpus; i++) +@@ -985,8 +988,11 @@ pricumproc(struct sstat *sstat, struct d + { + struct tstat *curstat = *(devtstat->procactive+i); + +- extra.totut += curstat->cpu.utime; +- extra.totst += curstat->cpu.stime; ++ if (curstat) ++ { ++ extra.totut += curstat->cpu.utime; ++ extra.totst += curstat->cpu.stime; ++ } + } + + extra.nproc = devtstat->nprocall; diff --git a/SPECS/pcp.spec b/SPECS/pcp.spec index 6b57466..b39fd2b 100644 --- a/SPECS/pcp.spec +++ b/SPECS/pcp.spec @@ -1,6 +1,6 @@ Name: pcp Version: 4.3.2 -Release: 6%{?dist} +Release: 7%{?dist} Summary: System-level performance monitoring and performance management License: GPLv2+ and LGPLv2+ and CC-BY URL: https://pcp.io @@ -21,6 +21,7 @@ Patch3: selinux-override.patch Patch4: qa-fixmod.patch Patch5: redhat-bugzilla-1721107.patch Patch6: redhat-bugzilla-1673053.patch +Patch7: redhat-bugzilla-1804146.patch %if 0%{?fedora} >= 26 || 0%{?rhel} > 7 %global __python2 python2 @@ -2107,6 +2108,7 @@ adjustments for an updated policy package. %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 %build %if !%{disable_python2} && 0%{?default_python} != 3 @@ -3317,6 +3319,9 @@ cd %endif %changelog +* Wed Feb 19 2020 Nathan Scott - 4.3.2-7 +- Resolve a pcp-atop(1) sigsegv crash (BZ 1804146) + * Wed Aug 28 2019 Nathan Scott - 4.3.2-6 - Improve libpcp corrupt archive handling in multi-archive mode (BZ 1673053)