diff mbox series

lame: Upgrade 3.100 -> 4.0

Message ID 20260914133558.2695215-1-leon.anavi@konsulko.com
State New
Headers show
Series lame: Upgrade 3.100 -> 4.0 | expand

Commit Message

Leon Anavi Sept. 14, 2026, 1:35 p.m. UTC
Upgrade to release 4.0:

- Fixed a stack buffer overflow in the Blade-style encoder DLL
  (lame_enc.dll): beInitStream() copied a caller-supplied
  configuration structure using an unchecked, caller-controlled
  size, so an oversized or compiler-mismatched size could
  overwrite the stack. The size is now bounds-checked and the
  packed structure layout is consistent across MSVC and GCC/MinGW
  builds. [CVSS 8.4, Blade DLL]. Fix by Alexander Leidinger.
- Fixed an integer underflow in the AIFF header parser
  (parse_aiff_header()): a crafted file with a FORM chunk size
  below 4 wrapped the unsigned chunk-size counter to a huge value,
  sending the chunk-scanning loop into an effectively unbounded
  spin (a hang) on a tiny malicious input. The size is now
  validated before it is decremented. [CVSS 5.5, AIFF frontend].
  Fix by Alexander Leidinger.
- Bump the major version to 4.0 (minor reset to 0). The LAME tag
  embedded in every encoded MP3 has a fixed 9-byte field for the
  encoder version string; since 3.100 the 3-digit minor version
  left no room for the trailing alpha/beta/release marker
  character, which was silently dropped.
- Export the UTF-8 ID3 tag functions id3tag_set_textinfo_utf8 and
  id3tag_set_comment_utf8 from the shared library, and fix a
  possible crash on out-of-memory in the ID3v2 user-defined tag
  setters.

Add id3tags.patch from the mailing list to fix issues with
id3tag_set_textinfo_utf8:
https://sourceforge.net/p/lame/mailman/message/59358795/

This has been also fixed in the dev tree and will be included in
LAME release 4.1.

License-Update: Correct the address of the FSF.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
---
 meta/recipes-multimedia/lame/lame/clang.patch | 32 ++++++------
 .../lame/lame/id3tags.patch                   | 49 +++++++++++++++++++
 .../lame/lame/no-gtk1.patch                   | 10 ++--
 .../lame/{lame_3.100.bb => lame_4.0.bb}       |  7 +--
 4 files changed, 74 insertions(+), 24 deletions(-)
 create mode 100644 meta/recipes-multimedia/lame/lame/id3tags.patch
 rename meta/recipes-multimedia/lame/{lame_3.100.bb => lame_4.0.bb} (76%)

Comments

patchtest@automation.yoctoproject.org Sept. 14, 2026, 2:01 p.m. UTC | #1
Thank you for your submission. Patchtest identified one
or more issues with the patch. Please see the log below for
more information:

---
Testing patch /home/patchtest/share/mboxes/lame-Upgrade-3.100---4.0.patch

FAIL: test Signed-off-by presence: A patch file has been added without a Signed-off-by tag: 'id3tags.patch' (test_patch.TestPatch.test_signed_off_by_presence)

PASS: pretest src uri left files (test_metadata.TestMetadata.pretest_src_uri_left_files)
PASS: test CVE check ignore (test_metadata.TestMetadata.test_cve_check_ignore)
PASS: test CVE tag format (test_patch.TestPatch.test_cve_tag_format)
PASS: test Signed-off-by presence (test_mbox.TestMbox.test_signed_off_by_presence)
PASS: test Upstream-Status presence (test_patch.TestPatch.test_upstream_status_presence_format)
PASS: test auh changelog truncation notice (test_mbox.TestMbox.test_auh_changelog_truncation_notice)
PASS: test author valid (test_mbox.TestMbox.test_author_valid)
PASS: test commit message presence (test_mbox.TestMbox.test_commit_message_presence)
PASS: test commit message user tags (test_mbox.TestMbox.test_commit_message_user_tags)
PASS: test lic files chksum modified not mentioned (test_metadata.TestMetadata.test_lic_files_chksum_modified_not_mentioned)
PASS: test max line length (test_metadata.TestMetadata.test_max_line_length)
PASS: test mbox format (test_mbox.TestMbox.test_mbox_format)
PASS: test non-AUH upgrade (test_mbox.TestMbox.test_non_auh_upgrade)
PASS: test shortlog format (test_mbox.TestMbox.test_shortlog_format)
PASS: test shortlog length (test_mbox.TestMbox.test_shortlog_length)
PASS: test src uri left files (test_metadata.TestMetadata.test_src_uri_left_files)
PASS: test target mailing list (test_mbox.TestMbox.test_target_mailing_list)

SKIP: pretest pylint: No python related patches, skipping test (test_python_pylint.PyLint.pretest_pylint)
SKIP: test bugzilla entry format: No bug ID found (test_mbox.TestMbox.test_bugzilla_entry_format)
SKIP: test lic files chksum presence: No added recipes, skipping test (test_metadata.TestMetadata.test_lic_files_chksum_presence)
SKIP: test license presence: No added recipes, skipping test (test_metadata.TestMetadata.test_license_presence)
SKIP: test pylint: No python related patches, skipping test (test_python_pylint.PyLint.test_pylint)
SKIP: test series merge on head: Merge test is disabled for now (test_mbox.TestMbox.test_series_merge_on_head)
SKIP: test summary presence: No added recipes, skipping test (test_metadata.TestMetadata.test_summary_presence)

---

Please address the issues identified and
submit a new revision of the patch, or alternatively, reply to this
email with an explanation of why the patch should be accepted. If you
believe these results are due to an error in patchtest, please submit a
bug at https://bugzilla.yoctoproject.org/ (use the 'Patchtest' category
under 'Yocto Project Subprojects'). For more information on specific
failures, see: https://wiki.yoctoproject.org/wiki/Patchtest. Thank
you!
diff mbox series

Patch

diff --git a/meta/recipes-multimedia/lame/lame/clang.patch b/meta/recipes-multimedia/lame/lame/clang.patch
index 116000c577..9e434fcbe7 100644
--- a/meta/recipes-multimedia/lame/lame/clang.patch
+++ b/meta/recipes-multimedia/lame/lame/clang.patch
@@ -16,18 +16,18 @@  so resolves the build failure.
 Upstream-Status: Pending
 Signed-off-by: Ross Burton <ross.burton@arm.com>
 
-diff --git i/configure.in w/configure.in
-index 5e43179..d51b017 100644
---- i/configure.in
-+++ w/configure.in
-@@ -960,45 +960,43 @@ if test "x$HAVE_GCC" = "xyes" -o "x$HAVE_CLANG" = "xyes"; then
+diff --git i/configure.ac w/configure.ac
+index 1111111..2222222 100644
+--- i/configure.ac
++++ w/configure.ac
+@@ -1021,45 +1021,43 @@ if test "x$HAVE_GCC" = "xyes" -o "x$HAVE_CLANG" = "xyes"; then
  				;;
  			esac
  		fi
 +
 +		if test "x${HAVE_CLANG}" = "xyes"; then
 +			case "${CLANG_VERSION}" in
-+			3.[89]*|[45].*)
++			3.[[89]]*|[[45]].*|1[[0-9]].*)
 +				OPTIMIZATION="-Ofast"
 +				;;
 +			*)
@@ -48,23 +48,23 @@  index 5e43179..d51b017 100644
 +				OPTIMIZATION="${OPTIMIZATION} -march=i686 \
 +					-mtune=native"
 +				;;
-+			*86)
-+				OPTIMIZATION="${OPTIMIZATION} -march=native \
-+					-mtune=native"
-+				;;
 +			esac
 +
++			# if someone supplies own CFLAGS, we don't add our own
++			if test "x${ac_save_CFLAGS}" != "x"; then
++				OPTIMIZATION=""
++			fi
 +		fi
  		;;
  	*)
  		AC_MSG_ERROR(bad value �${CONFIG_EXPOPT}� for expopt option)
  		;;
  	esac
- 
+
 -
 -	if test "x${HAVE_CLANG}" = "xyes"; then
 -		case "${CLANG_VERSION}" in
--		3.[89]*|[45].*)
+-		3.[[89]]*|[[45]].*|1[[0-9]].*)
 -			OPTIMIZATION="-Ofast"
 -			;;
 -		*)
@@ -85,12 +85,12 @@  index 5e43179..d51b017 100644
 -			OPTIMIZATION="${OPTIMIZATION} -march=i686 \
 -				-mtune=native"
 -			;;
--		*86)
--			OPTIMIZATION="${OPTIMIZATION} -march=native \
--				-mtune=native"
--			;;
 -		esac
 -
+-		# if someone supplies own CFLAGS, we don't add our own
+-		if test "x${ac_save_CFLAGS}" != "x"; then
+-			OPTIMIZATION=""
+-		fi
 -	fi
 -
 -
diff --git a/meta/recipes-multimedia/lame/lame/id3tags.patch b/meta/recipes-multimedia/lame/lame/id3tags.patch
new file mode 100644
index 0000000000..1df79b0b8f
--- /dev/null
+++ b/meta/recipes-multimedia/lame/lame/id3tags.patch
@@ -0,0 +1,49 @@ 
+Upstream-Status: Pending
+
+diff --git a/frontend/parse.c b/frontend/parse.c
+index 4a6b660..2ae7eb2 100644
+--- a/frontend/parse.c
++++ b/frontend/parse.c
+@@ -402,6 +402,10 @@ static int getIntValue(char const* token, char const* arg, int* ptr)
+ }
+ 
+ #ifdef ID3TAGS_EXTENDED
++extern int
++id3tag_set_comment_ucs2(lame_t gfp, char const *lang, unsigned short const *desc, unsigned short const *text);
++extern int
++id3tag_set_fieldvalue_ucs2(lame_t gfp, const unsigned short *fieldvalue);
+ static int
+ set_id3v2tag(lame_global_flags* gfp, TextEncoding enc, int type, unsigned short const* str)
+ {
+@@ -410,13 +414,13 @@ set_id3v2tag(lame_global_flags* gfp, TextEncoding enc, int type, unsigned short
+         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 'a': return id3tag_set_textinfo_utf8(gfp, "TPE1", (const char *)str);
++                case 't': return id3tag_set_textinfo_utf8(gfp, "TIT2", (const char *)str);
++                case 'l': return id3tag_set_textinfo_utf8(gfp, "TALB", (const char *)str);
++                case 'g': return id3tag_set_textinfo_utf8(gfp, "TCON", (const char *)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 'n': return id3tag_set_textinfo_utf8(gfp, "TRCK", (const char *)str);
++                case 'y': return id3tag_set_textinfo_utf8(gfp, "TYER", (const char *)str);
+                 case 'v': return id3tag_set_fieldvalue_ucs2(gfp, str);
+             }
+             ;;
+diff --git a/include/libmp3lame.sym b/include/libmp3lame.sym
+index 7651fb3..77657ab 100644
+--- a/include/libmp3lame.sym
++++ b/include/libmp3lame.sym
+@@ -193,6 +193,7 @@ hip_decode_headers
+ hip_decode1
+ hip_decode1_headers
+ hip_decode1_headersB
++hip_finish_pinfo
+ lame_decode_init
+ lame_decode
+ lame_decode_headers
diff --git a/meta/recipes-multimedia/lame/lame/no-gtk1.patch b/meta/recipes-multimedia/lame/lame/no-gtk1.patch
index e88d7f1bb4..1d7527e180 100644
--- a/meta/recipes-multimedia/lame/lame/no-gtk1.patch
+++ b/meta/recipes-multimedia/lame/lame/no-gtk1.patch
@@ -2,12 +2,12 @@  Upstream-Status: Inappropriate [configuration]
 
 # Acquired from OpenEmbedded
 
---- lame-3.96.1/configure.in~no-gtk1.patch	2004-07-25 15:52:12.000000000 +0100
-+++ lame-3.96.1/configure.in	2004-09-10 15:54:39.000000000 +0100
-@@ -363,7 +363,12 @@
- 
+--- lame-4.0/configure.ac~no-gtk1.patch
++++ lame-4.0/configure.ac
+@@ -477,7 +477,12 @@
+
  dnl configure use of features
- 
+
 -AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no")
 +#AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no")
 +HAVE_GTK="no"
diff --git a/meta/recipes-multimedia/lame/lame_3.100.bb b/meta/recipes-multimedia/lame/lame_4.0.bb
similarity index 76%
rename from meta/recipes-multimedia/lame/lame_3.100.bb
rename to meta/recipes-multimedia/lame/lame_4.0.bb
index 42689df351..0dd94e9d25 100644
--- a/meta/recipes-multimedia/lame/lame_3.100.bb
+++ b/meta/recipes-multimedia/lame/lame_4.0.bb
@@ -4,18 +4,19 @@  HOMEPAGE = "https://lame.sourceforge.io/"
 BUGTRACKER = "http://sourceforge.net/tracker/?group_id=290&atid=100290"
 SECTION = "console/utils"
 LICENSE = "LGPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c46bda00ffbb0ba1dac22f8d087f54d9 \
+LIC_FILES_CHKSUM = "file://COPYING;md5=a03aed0afc52dd24ed99db06d64a9fa3 \
                     file://include/lame.h;beginline=1;endline=20;md5=a2258182c593c398d15a48262130a92b \
 "
 
-DEPENDS = "ncurses gettext-native"
+DEPENDS = "ncurses mpg123 gettext-native"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/lame/lame-${PV}.tar.gz \
            file://no-gtk1.patch \
            file://clang.patch \
+           file://id3tags.patch \
            "
 
-SRC_URI[sha256sum] = "ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e"
+SRC_URI[sha256sum] = "3df5124d5ad3a98312ffd7ba6a9b36230e4f8a3e66d3ce0f425e336c32d216eb"
 
 inherit autotools pkgconfig sourceforge-releases