Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package dr_libs for openSUSE:Factory checked 
in at 2026-01-21 14:18:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dr_libs (Old)
 and      /work/SRC/openSUSE:Factory/.dr_libs.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "dr_libs"

Wed Jan 21 14:18:01 2026 rev:3 rq:1328412 version:20260117

Changes:
--------
--- /work/SRC/openSUSE:Factory/dr_libs/dr_libs.changes  2025-12-08 
11:56:26.383735163 +0100
+++ /work/SRC/openSUSE:Factory/.dr_libs.new.1928/dr_libs.changes        
2026-01-21 14:18:12.349029776 +0100
@@ -1,0 +2,10 @@
+Wed Jan 21 01:02:00 UTC 2026 - Richard Rahl <[email protected]>
+
+- Update to version 20260117:
+  * dr_mp3: Fix some compilation warnings
+  * dr_wav: Fix some compilation warnings
+  * dr_flac: Fix a compilation warning
+  * dr_flac: Fix a compiler compatibility issue with some inlined assembly
+  * dr_mp3: Fix an error in drmp3_open_and_read_pcm_frames_s16() and family
+
+-------------------------------------------------------------------

Old:
----
  dr_libs-20251202.tar.gz

New:
----
  dr_libs-20260117.tar.gz

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

Other differences:
------------------
++++++ dr_libs.spec ++++++
--- /var/tmp/diff_new_pack.PldWr0/_old  2026-01-21 14:18:13.157062841 +0100
+++ /var/tmp/diff_new_pack.PldWr0/_new  2026-01-21 14:18:13.161063002 +0100
@@ -16,11 +16,11 @@
 #
 
 
-%define         flacversion 0.13.2
-%define         mp3version 0.7.2
-%define         wavversion 0.14.2
+%define         flacversion 0.13.3
+%define         mp3version 0.7.3
+%define         wavversion 0.14.4
 Name:           dr_libs
-Version:        20251202
+Version:        20260117
 Release:        0
 Summary:        Audio decoding libraries for C/C++, each in a single source 
file
 License:        MIT-0 OR Unlicense

++++++ dr_libs-20251202.tar.gz -> dr_libs-20260117.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dr_libs-20251202/.github/SECURITY.md 
new/dr_libs-20260117/.github/SECURITY.md
--- old/dr_libs-20251202/.github/SECURITY.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/dr_libs-20260117/.github/SECURITY.md    2026-01-17 00:06:53.000000000 
+0100
@@ -0,0 +1,4 @@
+I deal with all security related issues publicly and transparently, and it can 
sometimes take a while before I
+get a chance to address it. If this is an issue for you, you need to use 
another library. The fastest way to get
+a bug fixed is to submit a pull request, but if this is impractical for you 
please post a ticket to the public
+GitHub issue tracker.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dr_libs-20251202/dr_flac.h 
new/dr_libs-20260117/dr_flac.h
--- old/dr_libs-20251202/dr_flac.h      2025-12-01 20:29:09.000000000 +0100
+++ new/dr_libs-20260117/dr_flac.h      2026-01-17 00:06:53.000000000 +0100
@@ -1,6 +1,6 @@
 /*
 FLAC audio decoder. Choice of public domain or MIT-0. See license statements 
at the end of this file.
-dr_flac - v0.13.2 - 2025-12-02
+dr_flac - v0.13.3 - 2026-01-17
 
 David Reid - [email protected]
 
@@ -126,7 +126,7 @@
 
 #define DRFLAC_VERSION_MAJOR     0
 #define DRFLAC_VERSION_MINOR     13
-#define DRFLAC_VERSION_REVISION  2
+#define DRFLAC_VERSION_REVISION  3
 #define DRFLAC_VERSION_STRING    DRFLAC_XSTRINGIFY(DRFLAC_VERSION_MAJOR) "." 
DRFLAC_XSTRINGIFY(DRFLAC_VERSION_MINOR) "." 
DRFLAC_XSTRINGIFY(DRFLAC_VERSION_REVISION)
 
 #include <stddef.h> /* For size_t. */
@@ -2716,9 +2716,17 @@
     #if defined(__GNUC__) || defined(__clang__)
         #if defined(DRFLAC_X64)
             {
+                /*
+                A note on lzcnt.
+
+                We check for the presence of the lzcnt instruction at runtime 
before calling this function, but we still generate this code. I have had
+                a report where the assembler does not recognize the lzcnt 
instruction. To work around this we are going to use `rep; bsr` instead which
+                has an identical byte encoding as lzcnt, and should hopefully 
improve compatibility with older assemblers.
+                */
                 drflac_uint64 r;
                 __asm__ __volatile__ (
-                    "lzcnt{ %1, %0| %0, %1}" : "=r"(r) : "r"(x) : "cc"
+                    "rep; bsr{q %1, %0| %0, %1}" : "=r"(r) : "r"(x) : "cc"
+                    /*"lzcnt{ %1, %0| %0, %1}" : "=r"(r) : "r"(x) : "cc"*/
                 );
 
                 return (drflac_uint32)r;
@@ -2727,7 +2735,8 @@
             {
                 drflac_uint32 r;
                 __asm__ __volatile__ (
-                    "lzcnt{l %1, %0| %0, %1}" : "=r"(r) : "r"(x) : "cc"
+                    "rep; bsr{l %1, %0| %0, %1}" : "=r"(r) : "r"(x) : "cc"
+                    /*"lzcnt{l %1, %0| %0, %1}" : "=r"(r) : "r"(x) : "cc"*/
                 );
 
                 return r;
@@ -6842,8 +6851,10 @@
                     }
 
                     blockSizeRemaining -= 
metadata.data.picture.pictureDataSize;
-                    metadata.data.picture.pPictureData = (const 
drflac_uint8*)pPictureData;
+                    (void)blockSizeRemaining;
 
+                    metadata.data.picture.pPictureData = (const 
drflac_uint8*)pPictureData;
+                    
 
                     /* Only fire the callback if we actually have a way to 
read the image data. We must have either a valid offset, or a valid data 
pointer. */
                     if (metadata.data.picture.pictureDataOffset != 0 || 
metadata.data.picture.pPictureData != NULL) {
@@ -12158,6 +12169,10 @@
 /*
 REVISION HISTORY
 ================
+v0.13.3 - 2026-01-17
+  - Fix a compiler compatibility issue with some inlined assembly.
+  - Fix a compilation warning.
+
 v0.13.2 - 2025-12-02
   - Improve robustness of the parsing of picture metadata to improve support 
for memory constrained embedded devices.
   - Fix a warning about an assigned by unused variable.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dr_libs-20251202/dr_mp3.h 
new/dr_libs-20260117/dr_mp3.h
--- old/dr_libs-20251202/dr_mp3.h       2025-12-01 20:29:09.000000000 +0100
+++ new/dr_libs-20260117/dr_mp3.h       2026-01-17 00:06:53.000000000 +0100
@@ -1,6 +1,6 @@
 /*
 MP3 audio decoder. Choice of public domain or MIT-0. See license statements at 
the end of this file.
-dr_mp3 - v0.7.2 - 2025-12-02
+dr_mp3 - v0.7.3 - 2026-01-17
 
 David Reid - [email protected]
 
@@ -72,7 +72,7 @@
 
 #define DRMP3_VERSION_MAJOR     0
 #define DRMP3_VERSION_MINOR     7
-#define DRMP3_VERSION_REVISION  2
+#define DRMP3_VERSION_REVISION  3
 #define DRMP3_VERSION_STRING    DRMP3_XSTRINGIFY(DRMP3_VERSION_MAJOR) "." 
DRMP3_XSTRINGIFY(DRMP3_VERSION_MINOR) "." 
DRMP3_XSTRINGIFY(DRMP3_VERSION_REVISION)
 
 #include <stddef.h> /* For size_t. */
@@ -3170,7 +3170,6 @@
         {
             drmp3_bs bs;
             drmp3_L3_gr_info grInfo[4];
-            const drmp3_uint8* pTagData = pFirstFrameData;
 
             drmp3_bs_init(&bs, pFirstFrameData + DRMP3_HDR_SIZE, 
firstFrameInfo.frame_bytes - DRMP3_HDR_SIZE);
 
@@ -3181,6 +3180,7 @@
             if (drmp3_L3_read_side_info(&bs, grInfo, pFirstFrameData) >= 0) {
                 drmp3_bool32 isXing = DRMP3_FALSE;
                 drmp3_bool32 isInfo = DRMP3_FALSE;
+                const drmp3_uint8* pTagData;
                 const drmp3_uint8* pTagDataBeg;
 
                 pTagDataBeg = pFirstFrameData + DRMP3_HDR_SIZE + (bs.pos/8);
@@ -3331,8 +3331,6 @@
 
     DRMP3_ASSERT(pMP3 != NULL);
 
-    newCursor = pMP3->memory.currentReadPos;
-
     if (origin == DRMP3_SEEK_SET) {
         newCursor = 0;
     } else if (origin == DRMP3_SEEK_CUR) {
@@ -4804,6 +4802,8 @@
             pNewFrames = (float*)drmp3__realloc_from_callbacks(pFrames, 
(size_t)newFramesBufferSize, (size_t)oldFramesBufferSize, 
&pMP3->allocationCallbacks);
             if (pNewFrames == NULL) {
                 drmp3__free_from_callbacks(pFrames, 
&pMP3->allocationCallbacks);
+                pFrames = NULL;
+                totalFramesRead = 0;
                 break;
             }
 
@@ -4871,6 +4871,8 @@
             pNewFrames = (drmp3_int16*)drmp3__realloc_from_callbacks(pFrames, 
(size_t)newFramesBufferSize, (size_t)oldFramesBufferSize, 
&pMP3->allocationCallbacks);
             if (pNewFrames == NULL) {
                 drmp3__free_from_callbacks(pFrames, 
&pMP3->allocationCallbacks);
+                pFrames = NULL;
+                totalFramesRead = 0;
                 break;
             }
 
@@ -5005,6 +5007,10 @@
 /*
 REVISION HISTORY
 ================
+v0.7.3 - 2026-01-17
+  - Fix an error in drmp3_open_and_read_pcm_frames_s16() and family when 
memory allocation fails.
+  - Fix some compilation warnings.
+
 v0.7.2 - 2025-12-02
   - Reduce stack space to improve robustness on embedded systems.
   - Fix a compilation error with MSVC Clang toolset relating to cpuid.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dr_libs-20251202/dr_wav.h 
new/dr_libs-20260117/dr_wav.h
--- old/dr_libs-20251202/dr_wav.h       2025-12-01 20:29:09.000000000 +0100
+++ new/dr_libs-20260117/dr_wav.h       2026-01-17 00:06:53.000000000 +0100
@@ -1,6 +1,6 @@
 /*
 WAV audio loader and writer. Choice of public domain or MIT-0. See license 
statements at the end of this file.
-dr_wav - v0.14.2 - 2025-12-02
+dr_wav - v0.14.4 - 2026-01-17
 
 David Reid - [email protected]
 
@@ -147,7 +147,7 @@
 
 #define DRWAV_VERSION_MAJOR     0
 #define DRWAV_VERSION_MINOR     14
-#define DRWAV_VERSION_REVISION  2
+#define DRWAV_VERSION_REVISION  4
 #define DRWAV_VERSION_STRING    DRWAV_XSTRINGIFY(DRWAV_VERSION_MAJOR) "." 
DRWAV_XSTRINGIFY(DRWAV_VERSION_MINOR) "." 
DRWAV_XSTRINGIFY(DRWAV_VERSION_REVISION)
 
 #include <stddef.h> /* For size_t. */
@@ -5492,8 +5492,6 @@
 
     DRWAV_ASSERT(pWav != NULL);
 
-    newCursor = pWav->memoryStream.currentReadPos;
-
     if (origin == DRWAV_SEEK_SET) {
         newCursor = 0;
     } else if (origin == DRWAV_SEEK_CUR) {
@@ -5566,8 +5564,6 @@
 
     DRWAV_ASSERT(pWav != NULL);
 
-    newCursor = pWav->memoryStreamWrite.currentWritePos;
-
     if (origin == DRWAV_SEEK_SET) {
         newCursor = 0;
     } else if (origin == DRWAV_SEEK_CUR) {
@@ -6292,7 +6288,7 @@
                 pWav->msadpcm.cachedFrameCount = 2;
 
                 /* The predictor is used as an index into coeff1Table so we'll 
need to validate to ensure it never overflows. */
-                if (pWav->msadpcm.predictor[0] >= drwav_countof(coeff1Table)) {
+                if (pWav->msadpcm.predictor[0] >= drwav_countof(coeff1Table) 
|| pWav->msadpcm.predictor[0] >= drwav_countof(coeff2Table)) {
                     return totalFramesRead; /* Invalid file. */
                 }
             } else {
@@ -6319,7 +6315,8 @@
                 pWav->msadpcm.cachedFrameCount = 2;
 
                 /* The predictor is used as an index into coeff1Table so we'll 
need to validate to ensure it never overflows. */
-                if (pWav->msadpcm.predictor[0] >= drwav_countof(coeff1Table) 
|| pWav->msadpcm.predictor[1] >= drwav_countof(coeff2Table)) {
+                if (pWav->msadpcm.predictor[0] >= drwav_countof(coeff1Table) 
|| pWav->msadpcm.predictor[0] >= drwav_countof(coeff2Table) ||
+                    pWav->msadpcm.predictor[1] >= drwav_countof(coeff1Table) 
|| pWav->msadpcm.predictor[1] >= drwav_countof(coeff2Table)) {
                     return totalFramesRead; /* Invalid file. */
                 }
             }
@@ -6373,6 +6370,11 @@
                     drwav_int32 newSample0;
                     drwav_int32 newSample1;
 
+                    /* The predictor is read from the file and then indexed 
into a table. Check that it's in bounds. */
+                    if (pWav->msadpcm.predictor[0] >= 
drwav_countof(coeff1Table) || pWav->msadpcm.predictor[0] >= 
drwav_countof(coeff2Table)) {
+                        return totalFramesRead;
+                    }
+
                     newSample0  = ((pWav->msadpcm.prevFrames[0][1] * 
coeff1Table[pWav->msadpcm.predictor[0]]) + (pWav->msadpcm.prevFrames[0][0] * 
coeff2Table[pWav->msadpcm.predictor[0]])) >> 8;
                     newSample0 += nibble0 * pWav->msadpcm.delta[0];
                     newSample0  = drwav_clamp(newSample0, -32768, 32767);
@@ -6398,7 +6400,6 @@
                     pWav->msadpcm.prevFrames[0][0] = 
pWav->msadpcm.prevFrames[0][1];
                     pWav->msadpcm.prevFrames[0][1] = newSample1;
 
-
                     pWav->msadpcm.cachedFrames[2] = newSample0;
                     pWav->msadpcm.cachedFrames[3] = newSample1;
                     pWav->msadpcm.cachedFrameCount = 2;
@@ -6408,6 +6409,10 @@
                     drwav_int32 newSample1;
 
                     /* Left. */
+                    if (pWav->msadpcm.predictor[0] >= 
drwav_countof(coeff1Table) || pWav->msadpcm.predictor[0] >= 
drwav_countof(coeff2Table)) {
+                        return totalFramesRead; /* Out of bounds. Invalid 
file. */
+                    }
+
                     newSample0  = ((pWav->msadpcm.prevFrames[0][1] * 
coeff1Table[pWav->msadpcm.predictor[0]]) + (pWav->msadpcm.prevFrames[0][0] * 
coeff2Table[pWav->msadpcm.predictor[0]])) >> 8;
                     newSample0 += nibble0 * pWav->msadpcm.delta[0];
                     newSample0  = drwav_clamp(newSample0, -32768, 32767);
@@ -6422,6 +6427,10 @@
 
 
                     /* Right. */
+                    if (pWav->msadpcm.predictor[1] >= 
drwav_countof(coeff1Table) || pWav->msadpcm.predictor[1] >= 
drwav_countof(coeff2Table)) {
+                        return totalFramesRead; /* Out of bounds. Invalid 
file. */
+                    }
+
                     newSample1  = ((pWav->msadpcm.prevFrames[1][1] * 
coeff1Table[pWav->msadpcm.predictor[1]]) + (pWav->msadpcm.prevFrames[1][0] * 
coeff2Table[pWav->msadpcm.predictor[1]])) >> 8;
                     newSample1 += nibble1 * pWav->msadpcm.delta[1];
                     newSample1  = drwav_clamp(newSample1, -32768, 32767);
@@ -8053,6 +8062,12 @@
 
     DRWAV_ASSERT(pWav != NULL);
 
+    /* Check for overflow before multiplication. */
+    if (pWav->channels == 0 || pWav->totalPCMFrameCount > DRWAV_SIZE_MAX / 
pWav->channels / sizeof(drwav_int16)) {
+        drwav_uninit(pWav);
+        return NULL;    /* Overflow or invalid channels. */
+    }
+
     sampleDataSize = pWav->totalPCMFrameCount * pWav->channels * 
sizeof(drwav_int16);
     if (sampleDataSize > DRWAV_SIZE_MAX) {
         drwav_uninit(pWav);
@@ -8095,6 +8110,12 @@
 
     DRWAV_ASSERT(pWav != NULL);
 
+    /* Check for overflow before multiplication. */
+    if (pWav->channels == 0 || pWav->totalPCMFrameCount > DRWAV_SIZE_MAX / 
pWav->channels / sizeof(float)) {
+        drwav_uninit(pWav);
+        return NULL;    /* Overflow or invalid channels. */
+    }
+
     sampleDataSize = pWav->totalPCMFrameCount * pWav->channels * sizeof(float);
     if (sampleDataSize > DRWAV_SIZE_MAX) {
         drwav_uninit(pWav);
@@ -8137,6 +8158,12 @@
 
     DRWAV_ASSERT(pWav != NULL);
 
+    /* Check for overflow before multiplication. */
+    if (pWav->channels == 0 || pWav->totalPCMFrameCount > DRWAV_SIZE_MAX / 
pWav->channels / sizeof(drwav_int32)) {
+        drwav_uninit(pWav);
+        return NULL;    /* Overflow or invalid channels. */
+    }
+
     sampleDataSize = pWav->totalPCMFrameCount * pWav->channels * 
sizeof(drwav_int32);
     if (sampleDataSize > DRWAV_SIZE_MAX) {
         drwav_uninit(pWav);
@@ -8517,6 +8544,13 @@
 /*
 REVISION HISTORY
 ================
+v0.14.4 - 2026-01-17
+  - Fix some compilation warnings.
+
+v0.14.3 - 2025-12-14
+  - Fix a possible out-of-bounds read when reading from MS-ADPCM encoded files.
+  - Fix a possible integer overflow error.
+
 v0.14.2 - 2025-12-02
   - Fix a compilation warning.
 

Reply via email to