commit:     e6771be6d67369f71dc1a5002682c17a2ff054aa
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Dec  9 22:32:51 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Dec  9 22:32:51 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e6771be6

media-libs/alsa-lib: backport more upstream fixes to 1.2.15

This may help bug #967264 as it fixes a config parsing bug.

Bug: https://bugs.gentoo.org/967264
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...-1.2.15-r1.ebuild => alsa-lib-1.2.15-r2.ebuild} |  3 +-
 ...-ucm-use-closefrom-instead-of-close_range.patch | 51 ++++++++++++
 .../0002-ucm-exec-fix-maxfd-used-warning.patch     | 53 ++++++++++++
 ...card-specific-contents-per-file-whole-aft.patch | 51 ++++++++++++
 ...ssible-memory-leak-in-config_file_open-er.patch | 35 ++++++++
 .../alsa-lib/files/alsa-lib-1.2.15-closefrom.patch | 97 ----------------------
 6 files changed, 192 insertions(+), 98 deletions(-)

diff --git a/media-libs/alsa-lib/alsa-lib-1.2.15-r1.ebuild 
b/media-libs/alsa-lib/alsa-lib-1.2.15-r2.ebuild
similarity index 98%
rename from media-libs/alsa-lib/alsa-lib-1.2.15-r1.ebuild
rename to media-libs/alsa-lib/alsa-lib-1.2.15-r2.ebuild
index 03418992c363..4ef4b1e7f001 100644
--- a/media-libs/alsa-lib/alsa-lib-1.2.15-r1.ebuild
+++ b/media-libs/alsa-lib/alsa-lib-1.2.15-r2.ebuild
@@ -34,7 +34,8 @@ BDEPEND="doc? ( >=app-text/doxygen-1.2.6 )"
 
 PATCHES=(
        "${FILESDIR}/${PN}-1.1.6-missing_files.patch" # bug #652422
-       "${FILESDIR}/alsa-lib-1.2.15-closefrom.patch"
+       # Backports since last tag
+       "${FILESDIR}/${PV}"
 )
 
 pkg_setup() {

diff --git 
a/media-libs/alsa-lib/files/1.2.15/0001-ucm-use-closefrom-instead-of-close_range.patch
 
b/media-libs/alsa-lib/files/1.2.15/0001-ucm-use-closefrom-instead-of-close_range.patch
new file mode 100644
index 000000000000..f33946cab65a
--- /dev/null
+++ 
b/media-libs/alsa-lib/files/1.2.15/0001-ucm-use-closefrom-instead-of-close_range.patch
@@ -0,0 +1,51 @@
+From a068cf08ad67447893b707cddfce31c9cafee643 Mon Sep 17 00:00:00 2001
+Message-ID: 
<a068cf08ad67447893b707cddfce31c9cafee643.1765319211.git....@gentoo.org>
+From: Mike Gilbert <[email protected]>
+Date: Mon, 8 Dec 2025 23:46:17 -0500
+Subject: [PATCH 1/4] ucm: use closefrom instead of close_range
+
+closefrom is a library function with a fallback mechanism for when the
+kernel does not support the close_range syscall.
+
+Also check for the function properly instead of assuming it is available
+with _GNU_SOURCE defined.
+
+Closes: https://github.com/alsa-project/alsa-lib/pull/486
+Fixes: https://github.com/alsa-project/alsa-lib/issues/485
+Signed-off-by: Mike Gilbert <[email protected]>
+Signed-off-by: Jaroslav Kysela <[email protected]>
+---
+ configure.ac       | 1 +
+ src/ucm/ucm_exec.c | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8f4bd0de..f4862f64 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -52,6 +52,7 @@ dnl Checks for library functions.
+ AC_PROG_GCC_TRADITIONAL
+ AC_CHECK_FUNCS([uselocale])
+ AC_CHECK_FUNCS([eaccess])
++AC_CHECK_DECLS([closefrom])
+ 
+ dnl Enable largefile support
+ AC_SYS_LARGEFILE
+diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c
+index b5a22023..713039b4 100644
+--- a/src/ucm/ucm_exec.c
++++ b/src/ucm/ucm_exec.c
+@@ -259,8 +259,8 @@ int uc_mgr_exec(const char *prog)
+ 
+               close(f);
+ 
+-#if defined(_GNU_SOURCE)
+-              close_range(3, maxfd, 0);
++#if HAVE_DECL_CLOSEFROM
++              closefrom(3);
+ #else
+               for (f = 3; f < maxfd; f++)
+                       close(f);
+-- 
+2.52.0
+

diff --git 
a/media-libs/alsa-lib/files/1.2.15/0002-ucm-exec-fix-maxfd-used-warning.patch 
b/media-libs/alsa-lib/files/1.2.15/0002-ucm-exec-fix-maxfd-used-warning.patch
new file mode 100644
index 000000000000..deb083943512
--- /dev/null
+++ 
b/media-libs/alsa-lib/files/1.2.15/0002-ucm-exec-fix-maxfd-used-warning.patch
@@ -0,0 +1,53 @@
+From 813ffe34ff6c720dcc56e4549338bf9e9184af1f Mon Sep 17 00:00:00 2001
+Message-ID: 
<813ffe34ff6c720dcc56e4549338bf9e9184af1f.1765319211.git....@gentoo.org>
+In-Reply-To: 
<a068cf08ad67447893b707cddfce31c9cafee643.1765319211.git....@gentoo.org>
+References: 
<a068cf08ad67447893b707cddfce31c9cafee643.1765319211.git....@gentoo.org>
+From: Jaroslav Kysela <[email protected]>
+Date: Tue, 9 Dec 2025 17:48:34 +0100
+Subject: [PATCH 2/4] ucm: exec - fix maxfd used warning
+
+Fixes: a068cf08 ("ucm: use closefrom instead of close_range")
+Signed-off-by: Jaroslav Kysela <[email protected]>
+---
+ src/ucm/ucm_exec.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c
+index 713039b4..c16a4cfd 100644
+--- a/src/ucm/ucm_exec.c
++++ b/src/ucm/ucm_exec.c
+@@ -183,7 +183,7 @@ static int parse_args(char ***argv, int argc, const char 
*cmd)
+  */
+ int uc_mgr_exec(const char *prog)
+ {
+-      pid_t p, f, maxfd;
++      pid_t p, f;
+       int err = 0, status;
+       char bin[PATH_MAX];
+       struct sigaction sa;
+@@ -212,8 +212,6 @@ int uc_mgr_exec(const char *prog)
+               prog = bin;
+       }
+ 
+-      maxfd = sysconf(_SC_OPEN_MAX);
+-
+       /*
+        * block SIGCHLD signal
+        * ignore SIGINT and SIGQUIT in parent
+@@ -262,8 +260,11 @@ int uc_mgr_exec(const char *prog)
+ #if HAVE_DECL_CLOSEFROM
+               closefrom(3);
+ #else
+-              for (f = 3; f < maxfd; f++)
+-                      close(f);
++              {
++                      pid_t maxfd = sysconf(_SC_OPEN_MAX);
++                      for (f = 3; f < maxfd; f++)
++                              close(f);
++              }
+ #endif
+ 
+               /* install default handlers for the forked process */
+-- 
+2.52.0
+

diff --git 
a/media-libs/alsa-lib/files/1.2.15/0003-conf-merge-card-specific-contents-per-file-whole-aft.patch
 
b/media-libs/alsa-lib/files/1.2.15/0003-conf-merge-card-specific-contents-per-file-whole-aft.patch
new file mode 100644
index 000000000000..66610b9eeec1
--- /dev/null
+++ 
b/media-libs/alsa-lib/files/1.2.15/0003-conf-merge-card-specific-contents-per-file-whole-aft.patch
@@ -0,0 +1,51 @@
+From a6238053c4fa518b214f99d91a01b96c5ef6e3ca Mon Sep 17 00:00:00 2001
+Message-ID: 
<a6238053c4fa518b214f99d91a01b96c5ef6e3ca.1765319211.git....@gentoo.org>
+In-Reply-To: 
<a068cf08ad67447893b707cddfce31c9cafee643.1765319211.git....@gentoo.org>
+References: 
<a068cf08ad67447893b707cddfce31c9cafee643.1765319211.git....@gentoo.org>
+From: Jaroslav Kysela <[email protected]>
+Date: Tue, 9 Dec 2025 18:04:07 +0100
+Subject: [PATCH 3/4] conf: merge card specific contents per file (whole) after
+ parsing
+
+Unfortunately, mentioned fix caused a regression for items stored in one file.
+Merge the file contents after parsing not inside parsing process.
+
+BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2420645
+Fixes: eda76146 ("conf: fix load_for_all_cards() - do not merge the card 
specific contents")
+Signed-off-by: Jaroslav Kysela <[email protected]>
+---
+ src/conf.c | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/src/conf.c b/src/conf.c
+index 49499ecd..b1ec9b38 100644
+--- a/src/conf.c
++++ b/src/conf.c
+@@ -4119,14 +4119,21 @@ static int config_filename_filter(const struct 
dirent64 *dirent)
+ static int config_file_open(snd_config_t *root, const char *filename, int 
merge)
+ {
+       snd_input_t *in;
++      snd_config_t *top;
+       int err;
+ 
+       err = snd_input_stdio_open(&in, filename, "r");
+       if (err >= 0) {
+-              if (merge)
++              if (merge) {
+                       err = snd_config_load(root, in);
+-              else
+-                      err = snd_config_load_override(root, in);
++              } else {
++                      err = snd_config_top(&top);
++                      if (err >= 0) {
++                              err = snd_config_load(top, in);
++                              if (err >= 0)
++                                      err = snd_config_merge(root, top, 1);
++                      }
++              }
+               snd_input_close(in);
+               if (err < 0)
+                       snd_error(CORE, "%s may be old or corrupted: consider 
to remove or fix it", filename);
+-- 
+2.52.0
+

diff --git 
a/media-libs/alsa-lib/files/1.2.15/0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch
 
b/media-libs/alsa-lib/files/1.2.15/0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch
new file mode 100644
index 000000000000..38920923ad10
--- /dev/null
+++ 
b/media-libs/alsa-lib/files/1.2.15/0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch
@@ -0,0 +1,35 @@
+From 2f59398c83b8065fb9ff58939df3a9187746068e Mon Sep 17 00:00:00 2001
+Message-ID: 
<2f59398c83b8065fb9ff58939df3a9187746068e.1765319211.git....@gentoo.org>
+In-Reply-To: 
<a068cf08ad67447893b707cddfce31c9cafee643.1765319211.git....@gentoo.org>
+References: 
<a068cf08ad67447893b707cddfce31c9cafee643.1765319211.git....@gentoo.org>
+From: Jaroslav Kysela <[email protected]>
+Date: Tue, 9 Dec 2025 18:39:52 +0100
+Subject: [PATCH 4/4] conf: fix possible memory leak in config_file_open() -
+ error path
+
+Fixes: a6238053 ("conf: merge card specific contents per file (whole) after 
parsing")
+Signed-off-by: Jaroslav Kysela <[email protected]>
+---
+ src/conf.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/conf.c b/src/conf.c
+index b1ec9b38..d90f6dc3 100644
+--- a/src/conf.c
++++ b/src/conf.c
+@@ -4130,8 +4130,11 @@ static int config_file_open(snd_config_t *root, const 
char *filename, int merge)
+                       err = snd_config_top(&top);
+                       if (err >= 0) {
+                               err = snd_config_load(top, in);
+-                              if (err >= 0)
++                              if (err >= 0) {
+                                       err = snd_config_merge(root, top, 1);
++                                      if (err < 0)
++                                              snd_config_delete(top);
++                              }
+                       }
+               }
+               snd_input_close(in);
+-- 
+2.52.0
+

diff --git a/media-libs/alsa-lib/files/alsa-lib-1.2.15-closefrom.patch 
b/media-libs/alsa-lib/files/alsa-lib-1.2.15-closefrom.patch
deleted file mode 100644
index 93de9f8153d8..000000000000
--- a/media-libs/alsa-lib/files/alsa-lib-1.2.15-closefrom.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-https://bugs.gentoo.org/967250
-https://github.com/alsa-project/alsa-lib/pull/486
-
-From a068cf08ad67447893b707cddfce31c9cafee643 Mon Sep 17 00:00:00 2001
-From: Mike Gilbert <[email protected]>
-Date: Mon, 8 Dec 2025 23:46:17 -0500
-Subject: [PATCH] ucm: use closefrom instead of close_range
-
-closefrom is a library function with a fallback mechanism for when the
-kernel does not support the close_range syscall.
-
-Also check for the function properly instead of assuming it is available
-with _GNU_SOURCE defined.
-
-Closes: https://github.com/alsa-project/alsa-lib/pull/486
-Fixes: https://github.com/alsa-project/alsa-lib/issues/485
-Signed-off-by: Mike Gilbert <[email protected]>
-Signed-off-by: Jaroslav Kysela <[email protected]>
----
- configure.ac       | 1 +
- src/ucm/ucm_exec.c | 4 ++--
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 8f4bd0de1..f4862f64c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -52,6 +52,7 @@ dnl Checks for library functions.
- AC_PROG_GCC_TRADITIONAL
- AC_CHECK_FUNCS([uselocale])
- AC_CHECK_FUNCS([eaccess])
-+AC_CHECK_DECLS([closefrom])
- 
- dnl Enable largefile support
- AC_SYS_LARGEFILE
-diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c
-index b5a22023b..713039b49 100644
---- a/src/ucm/ucm_exec.c
-+++ b/src/ucm/ucm_exec.c
-@@ -259,8 +259,8 @@ int uc_mgr_exec(const char *prog)
- 
-               close(f);
- 
--#if defined(_GNU_SOURCE)
--              close_range(3, maxfd, 0);
-+#if HAVE_DECL_CLOSEFROM
-+              closefrom(3);
- #else
-               for (f = 3; f < maxfd; f++)
-                       close(f);
-From 813ffe34ff6c720dcc56e4549338bf9e9184af1f Mon Sep 17 00:00:00 2001
-From: Jaroslav Kysela <[email protected]>
-Date: Tue, 9 Dec 2025 17:48:34 +0100
-Subject: [PATCH] ucm: exec - fix maxfd used warning
-
-Fixes: a068cf08 ("ucm: use closefrom instead of close_range")
-Signed-off-by: Jaroslav Kysela <[email protected]>
----
- src/ucm/ucm_exec.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c
-index 713039b4..c16a4cfd 100644
---- a/src/ucm/ucm_exec.c
-+++ b/src/ucm/ucm_exec.c
-@@ -183,7 +183,7 @@ static int parse_args(char ***argv, int argc, const char 
*cmd)
-  */
- int uc_mgr_exec(const char *prog)
- {
--      pid_t p, f, maxfd;
-+      pid_t p, f;
-       int err = 0, status;
-       char bin[PATH_MAX];
-       struct sigaction sa;
-@@ -212,8 +212,6 @@ int uc_mgr_exec(const char *prog)
-               prog = bin;
-       }
- 
--      maxfd = sysconf(_SC_OPEN_MAX);
--
-       /*
-        * block SIGCHLD signal
-        * ignore SIGINT and SIGQUIT in parent
-@@ -262,8 +260,11 @@ int uc_mgr_exec(const char *prog)
- #if HAVE_DECL_CLOSEFROM
-               closefrom(3);
- #else
--              for (f = 3; f < maxfd; f++)
--                      close(f);
-+              {
-+                      pid_t maxfd = sysconf(_SC_OPEN_MAX);
-+                      for (f = 3; f < maxfd; f++)
-+                              close(f);
-+              }
- #endif
- 
-               /* install default handlers for the forked process */

Reply via email to