Package: release.debian.org
Severity: normal
Tags: bookworm
User: [email protected]
Usertags: pu


The attached debdiff for taglib fixes CVE-2023-47466. This CVE is marked as no-dsa by the security team. Nevertheless NVD evaluated a score of 7.1 one for this CVE, which is categorized as "high".

The change is straightforward and a test exist, so the risk should be low.

   Thorsten
Binärdateien /tmp/2u88rYnicI/taglib-1.13/debian/binary-files/invalid-chunk.wav 
und /tmp/bXCH4FRxcT/taglib-1.13/debian/binary-files/invalid-chunk.wav sind 
verschieden.
diff -Nru taglib-1.13/debian/changelog taglib-1.13/debian/changelog
--- taglib-1.13/debian/changelog        2023-02-11 18:25:27.000000000 +0100
+++ taglib-1.13/debian/changelog        2026-01-18 10:03:02.000000000 +0100
@@ -1,3 +1,12 @@
+taglib (1.13-2+deb12u1) bookworm; urgency=high
+
+  * Non-maintainer upload by the LTS Team.
+  * CVE-2023-47466
+    fix segmentation violation
+  * add binary file for CVE-2023-47466
+
+ -- Thorsten Alteholz <[email protected]>  Sun, 18 Jan 2026 10:03:02 +0100
+
 taglib (1.13-2) unstable; urgency=high
 
   * Bump Standards-Version to 4.6.2.
diff -Nru taglib-1.13/debian/patches/CVE-2023-47466.patch 
taglib-1.13/debian/patches/CVE-2023-47466.patch
--- taglib-1.13/debian/patches/CVE-2023-47466.patch     1970-01-01 
01:00:00.000000000 +0100
+++ taglib-1.13/debian/patches/CVE-2023-47466.patch     2026-01-17 
19:58:02.000000000 +0100
@@ -0,0 +1,67 @@
+From dfa33bec0806cbb45785accb8cc6c2048a7d40cf Mon Sep 17 00:00:00 2001
+From: Urs Fleisch <[email protected]>
+Date: Sun, 5 Nov 2023 14:40:18 +0100
+Subject: [PATCH] Fix crash with invalid WAV files (#1163) (#1164)
+
+With specially crafted WAV files having the "id3 " chunk as the
+only valid chunk, when trying to write the tags, the existing
+"id3 " chunk is removed, and then vector::front() is called on
+the now empty chunks vector.
+Now it is checked if the vector is empty to avoid the crash.
+---
+ taglib/riff/rifffile.cpp     |   3 +++
+ tests/data/invalid-chunk.wav | Bin 0 -> 40 bytes
+ tests/test_wav.cpp           |  18 ++++++++++++++++++
+ 3 files changed, 21 insertions(+)
+ create mode 100644 tests/data/invalid-chunk.wav
+
+Index: taglib-1.13/taglib/riff/rifffile.cpp
+===================================================================
+--- taglib-1.13.orig/taglib/riff/rifffile.cpp  2026-01-17 19:57:57.662435663 
+0100
++++ taglib-1.13/taglib/riff/rifffile.cpp       2026-01-17 19:57:57.662435663 
+0100
+@@ -361,6 +361,9 @@
+ 
+ void RIFF::File::updateGlobalSize()
+ {
++  if(d->chunks.empty())
++    return;
++
+   const Chunk first = d->chunks.front();
+   const Chunk last  = d->chunks.back();
+   d->size = last.offset + last.size + last.padding - first.offset + 12;
+Index: taglib-1.13/tests/test_wav.cpp
+===================================================================
+--- taglib-1.13.orig/tests/test_wav.cpp        2026-01-17 19:57:57.662435663 
+0100
++++ taglib-1.13/tests/test_wav.cpp     2026-01-17 19:57:57.662435663 +0100
+@@ -58,6 +58,7 @@
+   CPPUNIT_TEST(testStripAndProperties);
+   CPPUNIT_TEST(testPCMWithFactChunk);
+   CPPUNIT_TEST(testWaveFormatExtensible);
++  CPPUNIT_TEST(testInvalidChunk);
+   CPPUNIT_TEST_SUITE_END();
+ 
+ public:
+@@ -384,6 +385,23 @@
+     CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->format());
+   }
+ 
++  void testInvalidChunk()
++  {
++    ScopedFileCopy copy("invalid-chunk", ".wav");
++
++    {
++      RIFF::WAV::File f(copy.fileName().c_str());
++      CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds());
++      CPPUNIT_ASSERT(f.hasID3v2Tag());
++      f.ID3v2Tag()->setTitle("Title");
++      f.save();
++    }
++    {
++      RIFF::WAV::File f(copy.fileName().c_str());
++      CPPUNIT_ASSERT(!f.hasID3v2Tag());
++    }
++  }
++
+ };
+ 
+ CPPUNIT_TEST_SUITE_REGISTRATION(TestWAV);
diff -Nru taglib-1.13/debian/patches/series taglib-1.13/debian/patches/series
--- taglib-1.13/debian/patches/series   2023-02-11 18:23:17.000000000 +0100
+++ taglib-1.13/debian/patches/series   2026-01-11 13:17:47.000000000 +0100
@@ -1,2 +1,4 @@
 0001-Use-system-libutf8cpp-library.patch
 0002-Make-taglib-config-arch-independent.patch
+
+CVE-2023-47466.patch
diff -Nru taglib-1.13/debian/rules taglib-1.13/debian/rules
--- taglib-1.13/debian/rules    2023-02-11 18:23:17.000000000 +0100
+++ taglib-1.13/debian/rules    2026-01-18 10:03:02.000000000 +0100
@@ -42,6 +42,13 @@
            ln -s /usr/share/javascript/jquery/jquery.js builddir/doc/html; \
        fi
 
+override_dh_auto_test:
+       # add some binary testfiles that were part of a patch
+       cp debian/binary-files/invalid-chunk.wav tests/data
+       dh_auto_test
+       # cleanup
+       rm tests/data/invalid-chunk.wav
+
 # All-in-one default dh rule
 %:
        dh $@ --with=pkgkde-symbolshelper $(DH_AUTO_ARGS)
diff -Nru taglib-1.13/debian/source/include-binaries 
taglib-1.13/debian/source/include-binaries
--- taglib-1.13/debian/source/include-binaries  1970-01-01 01:00:00.000000000 
+0100
+++ taglib-1.13/debian/source/include-binaries  2026-01-17 20:13:03.000000000 
+0100
@@ -0,0 +1 @@
+debian/binary-files/invalid-chunk.wav

Reply via email to