From c34bd91f35dce053ca34d24712c227c0db833f5e Mon Sep 17 00:00:00 2001 From: Lars Wendler Date: Fri, 4 Jan 2019 18:47:13 +0100 Subject: [PATCH] media-plugins/alsa-plugins: Fixed a double free issue. Closes: https://bugs.gentoo.org/673792 Package-Manager: Portage-2.3.54, Repoman-2.3.12 Signed-off-by: Lars Wendler --- ....7.ebuild => alsa-plugins-1.1.7-r1.ebuild} | 6 +++- .../alsa-plugins-1.1.7-double_free_fix.patch | 34 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) rename media-plugins/alsa-plugins/{alsa-plugins-1.1.7.ebuild => alsa-plugins-1.1.7-r1.ebuild} (96%) create mode 100644 media-plugins/alsa-plugins/files/alsa-plugins-1.1.7-double_free_fix.patch diff --git a/media-plugins/alsa-plugins/alsa-plugins-1.1.7.ebuild b/media-plugins/alsa-plugins/alsa-plugins-1.1.7-r1.ebuild similarity index 96% rename from media-plugins/alsa-plugins/alsa-plugins-1.1.7.ebuild rename to media-plugins/alsa-plugins/alsa-plugins-1.1.7-r1.ebuild index 2eff3aacc81b..f97cc166249b 100644 --- a/media-plugins/alsa-plugins/alsa-plugins-1.1.7.ebuild +++ b/media-plugins/alsa-plugins/alsa-plugins-1.1.7-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Authors +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 @@ -30,6 +30,10 @@ RDEPEND=" DEPEND="${RDEPEND}" BDEPEND="virtual/pkgconfig" +PATCHES=( + "${FILESDIR}"/${P}-double_free_fix.patch +) + src_prepare() { default diff --git a/media-plugins/alsa-plugins/files/alsa-plugins-1.1.7-double_free_fix.patch b/media-plugins/alsa-plugins/files/alsa-plugins-1.1.7-double_free_fix.patch new file mode 100644 index 000000000000..9b3a81599b39 --- /dev/null +++ b/media-plugins/alsa-plugins/files/alsa-plugins-1.1.7-double_free_fix.patch @@ -0,0 +1,34 @@ +From a4e7e1282c57a2f4e83afe9a4008042d8b4c5bb9 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Tue, 23 Oct 2018 09:32:46 +0200 +Subject: [PATCH] a52_close: set slave to NULL to avoid double pcm free in + open fcn + +Signed-off-by: Jaroslav Kysela +--- + a52/pcm_a52.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/a52/pcm_a52.c b/a52/pcm_a52.c +index e431fd0..b005bc2 100644 +--- a/a52/pcm_a52.c ++++ b/a52/pcm_a52.c +@@ -654,10 +654,13 @@ static int a52_poll_revents(snd_pcm_ioplug_t *io, struct pollfd *pfd, + static int a52_close(snd_pcm_ioplug_t *io) + { + struct a52_ctx *rec = io->private_data; ++ snd_pcm_t *slave = rec->slave; + + a52_free(rec); +- if (rec->slave) +- return snd_pcm_close(rec->slave); ++ if (slave) { ++ rec->slave = NULL; ++ return snd_pcm_close(slave); ++ } + return 0; + } + +-- +1.7.11.7 + -- 2.26.2