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.
