summaryrefslogtreecommitdiff
path: root/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd
diff options
context:
space:
mode:
Diffstat (limited to 'import-layers/meta-openembedded/meta-oe/recipes-extended/collectd')
-rw-r--r--import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-collectd-replace-deprecated-readdir_r-with-readdir.patch66
-rw-r--r--import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/CVE-2016-6254.patch55
-rw-r--r--import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb4
3 files changed, 125 insertions, 0 deletions
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-collectd-replace-deprecated-readdir_r-with-readdir.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-collectd-replace-deprecated-readdir_r-with-readdir.patch
new file mode 100644
index 000000000..f3d53f26e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-collectd-replace-deprecated-readdir_r-with-readdir.patch
@@ -0,0 +1,66 @@
+Subject: [PATCH] collectd: replace deprecated readdir_r() with readdir()
+
+* Replace the usage of readdir_r() with readdir()
+ to address a compilation error under glibc 2.24
+ due to the deprecation of readdir_r
+
+| ../../collectd-5.5.0/src/vserver.c: In function 'vserver_read':
+| ../../collectd-5.5.0/src/vserver.c:167:3: error: 'readdir_r' is deprecated [-Werror=deprecated-declarations]
+| status = readdir_r (proc, (struct dirent *) dirent_buffer, &dent);
+| ^~~~~~
+| In file included from /buildarea4/myu2/build/prj_test_20160722/bitbake_build/tmp/sysroots/qemux86/usr/include/features.h:368:0,
+| from /buildarea4/myu2/build/prj_test_20160722/bitbake_build/tmp/sysroots/qemux86/usr/include/stdio.h:27,
+| from ../../collectd-5.5.0/src/daemon/collectd.h:34,
+| from ../../collectd-5.5.0/src/vserver.c:29:
+| /buildarea4/myu2/build/prj_test_20160722/bitbake_build/tmp/sysroots/qemux86/usr/include/dirent.h:189:12: note: declared here
+| extern int __REDIRECT (readdir_r,
+| ^
+
+ [1]https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=7584a3f96de88d5eefe5d6c634515278cbfbf052;hp=8d9c92017d85f23ba6a2b3614b2f2bcf1820d6f0
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ src/vserver.c | 15 ++++-----------
+ 1 file changed, 4 insertions(+), 11 deletions(-)
+
+diff --git a/src/vserver.c b/src/vserver.c
+index bd2e867..2e4e715 100644
+--- a/src/vserver.c
++++ b/src/vserver.c
+@@ -131,15 +131,8 @@ static derive_t vserver_get_sock_bytes(const char *s)
+
+ static int vserver_read (void)
+ {
+-#if NAME_MAX < 1024
+-# define DIRENT_BUFFER_SIZE (sizeof (struct dirent) + 1024 + 1)
+-#else
+-# define DIRENT_BUFFER_SIZE (sizeof (struct dirent) + NAME_MAX + 1)
+-#endif
+-
+ DIR *proc;
+- struct dirent *dent; /* 42 */
+- char dirent_buffer[DIRENT_BUFFER_SIZE];
++ struct dirent *dent = NULL; /* 42 */
+
+ errno = 0;
+ proc = opendir (PROCDIR);
+@@ -164,11 +157,11 @@ static int vserver_read (void)
+
+ int status;
+
+- status = readdir_r (proc, (struct dirent *) dirent_buffer, &dent);
+- if (status != 0)
++ dent = readdir (proc);
++ if (dent == NULL && errno != 0)
+ {
+ char errbuf[4096];
+- ERROR ("vserver plugin: readdir_r failed: %s",
++ ERROR ("vserver plugin: readdir failed: %s",
+ sstrerror (errno, errbuf, sizeof (errbuf)));
+ closedir (proc);
+ return (-1);
+--
+2.8.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/CVE-2016-6254.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/CVE-2016-6254.patch
new file mode 100644
index 000000000..bc85b4c0e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/CVE-2016-6254.patch
@@ -0,0 +1,55 @@
+From dd8483a4beb6f61521d8b32c726523bbea21cd92 Mon Sep 17 00:00:00 2001
+From: Florian Forster <octo@collectd.org>
+Date: Tue, 19 Jul 2016 10:00:37 +0200
+Subject: [PATCH] network plugin: Fix heap overflow in parse_packet().
+
+Emilien Gaspar has identified a heap overflow in parse_packet(), the
+function used by the network plugin to parse incoming network packets.
+
+This is a vulnerability in collectd, though the scope is not clear at
+this point. At the very least specially crafted network packets can be
+used to crash the daemon. We can't rule out a potential remote code
+execution though.
+
+Fixes: CVE-2016-6254
+
+cherry picked from upstream commit b589096f
+
+Upstream Status: Backport
+
+Signed-off-by: Alexandru Moise <alexandru.moise@windriver.com>
+---
+ src/network.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/network.c b/src/network.c
+index 551bd5c..cb979b2 100644
+--- a/src/network.c
++++ b/src/network.c
+@@ -1444,6 +1444,7 @@ static int parse_packet (sockent_t *se, /* {{{ */
+ printed_ignore_warning = 1;
+ }
+ buffer = ((char *) buffer) + pkg_length;
++ buffer_size -= (size_t) pkg_length;
+ continue;
+ }
+ #endif /* HAVE_LIBGCRYPT */
+@@ -1471,6 +1472,7 @@ static int parse_packet (sockent_t *se, /* {{{ */
+ printed_ignore_warning = 1;
+ }
+ buffer = ((char *) buffer) + pkg_length;
++ buffer_size -= (size_t) pkg_length;
+ continue;
+ }
+ #endif /* HAVE_LIBGCRYPT */
+@@ -1612,6 +1614,7 @@ static int parse_packet (sockent_t *se, /* {{{ */
+ DEBUG ("network plugin: parse_packet: Unknown part"
+ " type: 0x%04hx", pkg_type);
+ buffer = ((char *) buffer) + pkg_length;
++ buffer_size -= (size_t) pkg_length;
+ }
+ } /* while (buffer_size > sizeof (part_header_t)) */
+
+--
+2.7.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb
index 6a3476f54..34edecfba 100644
--- a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb
@@ -12,6 +12,8 @@ SRC_URI = "http://collectd.org/files/collectd-${PV}.tar.bz2 \
file://collectd.init \
file://collectd.service \
file://0001-conditionally-check-libvirt.patch \
+ file://0001-collectd-replace-deprecated-readdir_r-with-readdir.patch \
+ file://CVE-2016-6254.patch \
"
SRC_URI[md5sum] = "c39305ef5514b44238b0d31f77e29e6a"
SRC_URI[sha256sum] = "847684cf5c10de1dc34145078af3fcf6e0d168ba98c14f1343b1062a4b569e88"
@@ -76,6 +78,8 @@ do_install_append() {
${D}${systemd_unitdir}/system/collectd.service
}
+CONFFILES_${PN} = "${sysconfdir}/collectd.conf"
+
INITSCRIPT_NAME = "collectd"
INITSCRIPT_PARAMS = "defaults"