Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package lame for openSUSE:Factory checked in 
at 2026-10-23 20:20:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lame (Old)
 and      /work/SRC/openSUSE:Factory/.lame.new.2252680 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "lame"

Fri Oct 23 20:20:52 2026 rev:7 rq:1385925 version:4.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/lame/lame.changes        2023-03-15 
18:54:01.372228664 +0100
+++ /work/SRC/openSUSE:Factory/.lame.new.2252680/lame.changes   2026-10-23 
20:20:58.671193694 +0200
@@ -1,0 +2,23 @@
+Sat Oct 17 17:09:20 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 4.0 (libmp3lame soname unchanged, still .so.0):
+  * Major version bump: the 9-byte encoder version field in MP3s
+    overflowed with 3.100 minor versions; 4.0 resets the scheme.
+  * Security fixes: AIFF header parser integer-underflow DoS
+    (CVSS 5.5, frontend); Blade DLL beInitStream stack overflow
+    (Windows-only, CVSS 8.4).
+  * Fix build with recent GCC/Clang (UTF-8 ID3 tag functions);
+    export id3tag_set_textinfo/comment_utf8 from shared lib.
+  * Add ID3v2.4 support and upstream pkg-config support.
+  * mp3rtp gains IPv6 support (incompatible CLI change).
+- Use upstream lame.pc; keep libmp3lame.pc alias.
+- Use pkgconfig(ncurses); drop obsolete Group tags.
+- Add pkgconfig(libmpg123) BuildRequires: 4.0's --enable-decoder
+  mandates external mpg123 (configure errors out without it).
+- Add lame-4.0-frontend-utf8.patch (backport of upstream post-4.0
+  fix): split the mistyped ID3v2 tag handler into typed UTF-16/UTF-8
+  variants and add id3tag_set_fieldvalue_utf8(); export hip_set_pinfo
+  and hip_finish_pinfo for the frontend; unbreaks the build
+  with GCC 14+ defaults.
+
+-------------------------------------------------------------------

Old:
----
  lame-3.100.tar.gz

New:
----
  lame-4.0-frontend-utf8.patch
  lame-4.0.tar.gz

----------(New B)----------
  New:  mandates external mpg123 (configure errors out without it).
- Add lame-4.0-frontend-utf8.patch (backport of upstream post-4.0
  fix): split the mistyped ID3v2 tag handler into typed UTF-16/UTF-8
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ lame.spec ++++++
--- /var/tmp/diff_new_pack.W219uS/_old  2026-10-23 20:21:00.192257347 +0200
+++ /var/tmp/diff_new_pack.W219uS/_new  2026-10-23 20:21:00.197257556 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package lame
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 # Copyright (c) 2012 Pascal Bleser <[email protected]>
 #
 # All modifications and additions to the file contributed by third parties
@@ -19,22 +19,23 @@
 
 %define sover 0
 Name:           lame
-Version:        3.100
+Version:        4.0
 Release:        0
 Summary:        The LAME MP3 encoder
 License:        LGPL-2.0-or-later
-Group:          Productivity/Multimedia/Sound/Editors and Convertors
 URL:            https://lame.sourceforge.net/
 Source:         http://prdownloads.sourceforge.net/lame/lame-%{version}.tar.gz
 Source99:       lame-rpmlintrc
 Source1000:     baselibs.conf
 Patch1:         lame-field-width-fix.patch
+Patch2:         lame-4.0-frontend-utf8.patch
 BuildRequires:  autoconf
 BuildRequires:  automake
 BuildRequires:  libtool
-BuildRequires:  ncurses-devel
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(gtk+-2.0)
+BuildRequires:  pkgconfig(libmpg123)
+BuildRequires:  pkgconfig(ncurses)
 Requires:       libmp3lame%{sover} >= %{version}
 %{?suse_build_hwcaps_libs}
 %ifarch %{ix86}
@@ -50,7 +51,6 @@
 
 %package doc
 Summary:        Documentation for the LAME MP3 encoder
-Group:          Productivity/Multimedia/Sound/Editors and Convertors
 Requires:       %{name} = %{version}
 
 %description doc
@@ -60,7 +60,6 @@
 
 %package -n libmp3lame%{sover}
 Summary:        The LAME MP3 encoder library
-Group:          System/Libraries
 
 %description -n libmp3lame%{sover}
 LAME is an encoder that converts audio to the MP3 file format. It has
@@ -69,7 +68,6 @@
 
 %package -n libmp3lame-devel
 Summary:        Development files for the LAME MP3 encoder
-Group:          Development/Libraries/C and C++
 Requires:       libmp3lame%{sover} = %{version}
 
 %description -n libmp3lame-devel
@@ -77,7 +75,6 @@
 
 %package mp3rtp
 Summary:        MP3 Encoder for RTP Streaming
-Group:          Productivity/Multimedia/Sound/Editors and Convertors
 Requires:       libmp3lame%{sover} >= %{version}
 
 %description mp3rtp
@@ -112,19 +109,7 @@
 make install pkgdocdir=%{_defaultdocdir}/%{name}/ DESTDIR=%{buildroot}
 rm -f %{buildroot}%{_libdir}/libmp3lame.la
 
-#make package config file
-mkdir -p %{buildroot}%{_libdir}/pkgconfig
-cat << EOF > %{buildroot}%{_libdir}/pkgconfig/lame.pc
-prefix=%{_prefix}
-libdir=%{_libdir}
-includedir=%{_includedir}/lame
-
-Name:           lame
-Description: encoder that converts audio to the MP3 file format.
-Version:        %{version}
-Libs: -L\${libdir} -lmp3lame
-Cflags: -I\${includedir}
-EOF
+# upstream ships lame.pc since 4.0; keep libmp3lame.pc alias for compatibility
 pushd %{buildroot}%{_libdir}/pkgconfig/
 ln -s lame.pc libmp3lame.pc
 popd

++++++ lame-4.0-frontend-utf8.patch ++++++
diff -rub lame-4.0.orig/frontend/parse.c lame-4.0/frontend/parse.c
--- lame-4.0.orig/frontend/parse.c      2026-10-17 19:17:38.681406662 +0200
+++ lame-4.0/frontend/parse.c   2026-10-17 19:17:38.857426437 +0200
@@ -402,40 +402,62 @@
 }
 
 #ifdef ID3TAGS_EXTENDED
-static int
-set_id3v2tag(lame_global_flags* gfp, TextEncoding enc, int type, unsigned 
short const* str)
+/**
+ * @internal
+ * @brief Returns the ID3v2 text frame that a tag option sets.
+ * @param type  the letter of the option: a, t, l, g, n or y.
+ * @return the four-character frame identifier. NULL for the comment (c), a
+ *         user frame (v) and any other letter.
+ */
+static char const *
+id3v2_text_frame(int type)
 {
-    switch (enc)
-    {
-        case TENC_UTF8:
             switch (type)
             {
-                case 'a': return id3tag_set_textinfo_utf8(gfp, "TPE1", str);
-                case 't': return id3tag_set_textinfo_utf8(gfp, "TIT2", str);
-                case 'l': return id3tag_set_textinfo_utf8(gfp, "TALB", str);
-                case 'g': return id3tag_set_textinfo_utf8(gfp, "TCON", str);
-                case 'c': return id3tag_set_comment_ucs2(gfp, 0, 0, str);
-                case 'n': return id3tag_set_textinfo_utf8(gfp, "TRCK", str);
-                case 'y': return id3tag_set_textinfo_utf8(gfp, "TYER", str);
-                case 'v': return id3tag_set_fieldvalue_ucs2(gfp, str);
+        case 'a': return "TPE1";
+        case 't': return "TIT2";
+        case 'l': return "TALB";
+        case 'g': return "TCON";
+        case 'n': return "TRCK";
+        case 'y': return "TYER";
             }
-            ;;
-        case TENC_UTF16:
+    return NULL;
+}
+
+/* Set an ID3v2 tag field from UTF-16 data. The data pointer is genuinely
+   UTF-16 here, so the UTF-16 id3tag_* setters are used throughout. */
+static int
+set_id3v2tag_utf16(lame_global_flags* gfp, int type, unsigned short const* str)
+{
+    char const *const id = id3v2_text_frame(type);
+
+    if (id != NULL)
+        return id3tag_set_textinfo_utf16(gfp, id, str);
             switch (type)
             {
-                case 'a': return id3tag_set_textinfo_utf16(gfp, "TPE1", str);
-                case 't': return id3tag_set_textinfo_utf16(gfp, "TIT2", str);
-                case 'l': return id3tag_set_textinfo_utf16(gfp, "TALB", str);
-                case 'g': return id3tag_set_textinfo_utf16(gfp, "TCON", str);
                 case 'c': return id3tag_set_comment_utf16(gfp, 0, 0, str);
-                case 'n': return id3tag_set_textinfo_utf16(gfp, "TRCK", str);
-                case 'y': return id3tag_set_textinfo_utf16(gfp, "TYER", str);
                 case 'v': return id3tag_set_fieldvalue_utf16(gfp, str);
             }
-            ;;
-        default:
             return -3;
+}
+
+/* Set an ID3v2 tag field from UTF-8 data. The data pointer is a UTF-8 char
+   string (not UTF-16 as the old, mistyped single handler assumed), so the
+   UTF-8 id3tag_* setters are used - including id3tag_set_fieldvalue_utf8 for
+   'v', which replaces the removed *_ucs2 calls the UTF-8 path used to make. */
+static int
+set_id3v2tag_utf8(lame_global_flags* gfp, int type, char const* str)
+{
+    char const *const id = id3v2_text_frame(type);
+
+    if (id != NULL)
+        return id3tag_set_textinfo_utf8(gfp, id, str);
+    switch (type)
+    {
+        case 'c': return id3tag_set_comment_utf8(gfp, 0, 0, str);
+        case 'v': return id3tag_set_fieldvalue_utf8(gfp, str);
     }
+    return -3;
 }
 #endif
 
@@ -480,8 +502,8 @@
         default:
 #ifdef ID3TAGS_EXTENDED
         case TENC_LATIN1: result = set_id3tag(gfp, type, x);   break;
-        case TENC_UTF16:  result = set_id3v2tag(gfp, enc, type, x); break;
-        case TENC_UTF8:   result = set_id3v2tag(gfp, enc, type, x); break;
+        case TENC_UTF16:  result = set_id3v2tag_utf16(gfp, type, x); break;
+        case TENC_UTF8:   result = set_id3v2tag_utf8(gfp, type, x);  break;
 #else
         case TENC_RAW:    result = set_id3tag(gfp, type, x);   break;
 #endif
diff -rub lame-4.0.orig/include/lame.h lame-4.0/include/lame.h
--- lame-4.0.orig/include/lame.h        2026-10-17 19:17:38.769416550 +0200
+++ lame-4.0/include/lame.h     2026-10-17 19:17:38.857426437 +0200
@@ -1297,6 +1297,9 @@
 int CDECL id3tag_set_fieldvalue_utf16(lame_t gfp, const unsigned short 
*fieldvalue);
 
 /* experimental */
+int CDECL id3tag_set_fieldvalue_utf8(lame_t gfp, const char *fieldvalue);
+
+/* experimental */
 int CDECL id3tag_set_textinfo_utf16(lame_t gfp, char const *id, unsigned short 
const *text);
 
 /* experimental */
diff -rub lame-4.0.orig/include/libmp3lame.sym lame-4.0/include/libmp3lame.sym
--- lame-4.0.orig/include/libmp3lame.sym        2026-10-17 19:17:38.769416550 
+0200
+++ lame-4.0/include/libmp3lame.sym     2026-10-17 19:22:59.389437149 +0200
@@ -188,6 +188,8 @@
 hip_set_errorf
 hip_set_debugf
 hip_set_msgf
+hip_set_pinfo
+hip_finish_pinfo
 hip_decode
 hip_decode_headers
 hip_decode1
@@ -229,6 +231,7 @@
 id3tag_set_comment_ucs2
 id3tag_set_fieldvalue_ucs2
 id3tag_set_fieldvalue_utf16
+id3tag_set_fieldvalue_utf8
 id3tag_set_textinfo_utf16
 id3tag_set_comment_utf16
 id3tag_set_textinfo_utf8
diff -rub lame-4.0.orig/libmp3lame/id3tag.c lame-4.0/libmp3lame/id3tag.c
--- lame-4.0.orig/libmp3lame/id3tag.c   2026-10-17 19:17:38.705409359 +0200
+++ lame-4.0/libmp3lame/id3tag.c        2026-10-17 19:17:38.861426887 +0200
@@ -1832,6 +1832,34 @@
     return -1;
 }
 
+/*! Set an arbitrary ID3v2 text frame, taking UTF-8. */
+/*!
+  \ingroup api_tags
+  \c id3tag_set_fieldvalue() for UTF-8 input. The frame identifier is ASCII in
+  both cases, so the string is read the same way. Only the text differs.
+
+  \param gfp         the encoder instance.
+  \param fieldvalue  the frame identifier, "=", and the text, in UTF-8. NULL
+                     or empty is accepted and does nothing.
+  \return 0 on success. -1 if the string is too short or has no "=" in the
+          fifth position. Otherwise the result of
+          \c id3tag_set_textinfo_utf8().
+*/
+int
+id3tag_set_fieldvalue_utf8(lame_t gfp, const char *fieldvalue)
+{
+    if (is_lame_internal_flags_null(gfp)) {
+        return 0;
+    }
+    if (fieldvalue && *fieldvalue) {
+        if (strlen(fieldvalue) < 5 || fieldvalue[4] != '=') {
+            return -1;
+        }
+        return id3tag_set_textinfo_utf8(gfp, fieldvalue, &fieldvalue[5]);
+    }
+    return 0;
+}
+
 extern int
 id3tag_set_fieldvalue_ucs2(lame_t gfp, const unsigned short *fieldvalue);
 

++++++ lame-3.100.tar.gz -> lame-4.0.tar.gz ++++++
++++ 149005 lines of diff (skipped)

Reply via email to