Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libxmp for openSUSE:Factory checked 
in at 2026-10-10 15:00:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libxmp (Old)
 and      /work/SRC/openSUSE:Factory/.libxmp.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libxmp"

Sat Oct 10 15:00:19 2026 rev:40 rq:1383986 version:4.7.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/libxmp/libxmp.changes    2026-09-12 
21:25:15.967305458 +0200
+++ /work/SRC/openSUSE:Factory/.libxmp.new.3698736/libxmp.changes       
2026-10-10 15:00:39.049172410 +0200
@@ -1,0 +2,8 @@
+Sat Oct 10 09:16:47 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 4.7.4
+  * Fix sample bounding in Imago Orpheus IMF loader.
+  * Remove maximum samples clamp in libxmp_load_epilogue (it is not
+    protecting anything and causes leaks in the XM loader).
+
+-------------------------------------------------------------------

Old:
----
  libxmp-4.7.3.tar.gz

New:
----
  libxmp-4.7.4.tar.gz

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

Other differences:
------------------
++++++ libxmp.spec ++++++
--- /var/tmp/diff_new_pack.LgZW4k/_old  2026-10-10 15:00:40.893249610 +0200
+++ /var/tmp/diff_new_pack.LgZW4k/_new  2026-10-10 15:00:40.898249820 +0200
@@ -18,7 +18,7 @@
 
 Name:           libxmp
 %define lname  libxmp4
-Version:        4.7.3
+Version:        4.7.4
 Release:        0
 Summary:        Module Player library for MOD, S3M, IT and others
 License:        MIT

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.LgZW4k/_old  2026-10-10 15:00:40.998254006 +0200
+++ /var/tmp/diff_new_pack.LgZW4k/_new  2026-10-10 15:00:41.005254299 +0200
@@ -1,5 +1,5 @@
-mtime: 1789158973
-commit: 40fbb9ef8b23b147e0709edc30cccb9af7f7f07455a3ea857da8222edc86b4fc
+mtime: 1791623963
+commit: 655b35ac340308d497db398c4b136a9850ee401c0fd9d47e7917ee5c4a21e4d8
 url: https://src.opensuse.org/jengelh/libxmp
 revision: master
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-10-10 11:19:23.000000000 +0200
@@ -0,0 +1 @@
+.osc

++++++ libxmp-4.7.3.tar.gz -> libxmp-4.7.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxmp-4.7.3/CMakeLists.txt 
new/libxmp-4.7.4/CMakeLists.txt
--- old/libxmp-4.7.3/CMakeLists.txt     2026-09-11 04:10:10.000000000 +0200
+++ new/libxmp-4.7.4/CMakeLists.txt     2026-10-10 05:21:40.000000000 +0200
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.2...3.10)
-project(libxmp VERSION 4.7.3 LANGUAGES C)
+project(libxmp VERSION 4.7.4 LANGUAGES C)
 
 set(LIBXMP_DEFINES)
 set(LIBXMPLITE_DEFINES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxmp-4.7.3/configure new/libxmp-4.7.4/configure
--- old/libxmp-4.7.3/configure  2026-09-11 04:10:50.000000000 +0200
+++ new/libxmp-4.7.4/configure  2026-10-10 05:21:50.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libxmp 4.7.3.
+# Generated by GNU Autoconf 2.69 for libxmp 4.7.4.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -577,8 +577,8 @@
 # Identity of this package.
 PACKAGE_NAME='libxmp'
 PACKAGE_TARNAME='libxmp'
-PACKAGE_VERSION='4.7.3'
-PACKAGE_STRING='libxmp 4.7.3'
+PACKAGE_VERSION='4.7.4'
+PACKAGE_STRING='libxmp 4.7.4'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1256,7 +1256,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libxmp 4.7.3 to adapt to many kinds of systems.
+\`configure' configures libxmp 4.7.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1321,7 +1321,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libxmp 4.7.3:";;
+     short | recursive ) echo "Configuration of libxmp 4.7.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1417,7 +1417,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libxmp configure 4.7.3
+libxmp configure 4.7.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1782,7 +1782,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libxmp $as_me 4.7.3, which was
+It was created by libxmp $as_me 4.7.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -5033,11 +5033,11 @@
 
 libxmp_VERSION_MINOR=7
 
-libxmp_VERSION_PATCH=3
+libxmp_VERSION_PATCH=4
 
-libxmp_VERSION=4.7.3
+libxmp_VERSION=4.7.4
 
-libxmplite_VERSION=4.7.3
+libxmplite_VERSION=4.7.4
 
 
 ac_config_files="$ac_config_files Makefile"
@@ -5595,7 +5595,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libxmp $as_me 4.7.3, which was
+This file was extended by libxmp $as_me 4.7.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5648,7 +5648,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libxmp config.status 4.7.3
+libxmp config.status 4.7.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxmp-4.7.3/configure.ac 
new/libxmp-4.7.4/configure.ac
--- old/libxmp-4.7.3/configure.ac       2026-09-11 04:10:10.000000000 +0200
+++ new/libxmp-4.7.4/configure.ac       2026-10-10 05:21:40.000000000 +0200
@@ -1,6 +1,6 @@
 m4_define([libxmp_VERSION_MAJOR_m4], [4])
 m4_define([libxmp_VERSION_MINOR_m4], [7])
-m4_define([libxmp_VERSION_PATCH_m4], [3])
+m4_define([libxmp_VERSION_PATCH_m4], [4])
 m4_define([libxmp_VERSION_m4], 
libxmp_VERSION_MAJOR_m4[.]libxmp_VERSION_MINOR_m4[.]libxmp_VERSION_PATCH_m4)
 
 AC_PREREQ(2.60)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxmp-4.7.3/docs/Changelog 
new/libxmp-4.7.4/docs/Changelog
--- old/libxmp-4.7.3/docs/Changelog     2026-09-11 04:10:10.000000000 +0200
+++ new/libxmp-4.7.4/docs/Changelog     2026-10-10 05:21:40.000000000 +0200
@@ -1,6 +1,12 @@
 Stable versions
 ---------------
 
+4.7.4 (20261010):
+       Changes by Alice Rowan:
+       - Fix sample bounding in Imago Orpheus IMF loader.
+       - Remove maximum samples clamp in libxmp_load_epilogue (isn't
+         protecting anything and causes leaks in the XM loader).
+
 4.7.3 (20260911):
        Changes by Alice Rowan:
        - Fix hangs caused by changing the player mode to an S3M/IT mode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxmp-4.7.3/include/xmp.h 
new/libxmp-4.7.4/include/xmp.h
--- old/libxmp-4.7.3/include/xmp.h      2026-09-11 04:10:10.000000000 +0200
+++ new/libxmp-4.7.4/include/xmp.h      2026-10-10 05:21:40.000000000 +0200
@@ -9,11 +9,11 @@
 extern "C" {
 #endif
 
-#define XMP_VERSION "4.7.3"
-#define XMP_VERCODE 0x040703
+#define XMP_VERSION "4.7.4"
+#define XMP_VERCODE 0x040704
 #define XMP_VER_MAJOR 4
 #define XMP_VER_MINOR 7
-#define XMP_VER_RELEASE 3
+#define XMP_VER_RELEASE 4
 
 #if defined(_WIN32) && !defined(__CYGWIN__)
 # if defined(LIBXMP_STATIC)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxmp-4.7.3/src/load_helpers.c 
new/libxmp-4.7.4/src/load_helpers.c
--- old/libxmp-4.7.3/src/load_helpers.c 2026-09-11 04:10:10.000000000 +0200
+++ new/libxmp-4.7.4/src/load_helpers.c 2026-10-10 05:21:40.000000000 +0200
@@ -350,8 +350,10 @@
        CLAMP(mod->len, 0, XMP_MAX_MOD_LENGTH);
        CLAMP(mod->pat, 0, 257);   /* some formats have an extra pattern */
        CLAMP(mod->ins, 0, 255);
-       CLAMP(mod->smp, 0, MAX_SAMPLES);
        CLAMP(mod->chn, 0, XMP_MAX_CHANNELS);
+       if (mod->smp < 0) {
+               mod->smp = 0;
+       }
 
        /* Fix cases where the restart value is invalid e.g. kc_fall8.xm
         * from http://aminet.net/mods/mvp/mvp_0002.lha (reported by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxmp-4.7.3/src/loaders/imf_load.c 
new/libxmp-4.7.4/src/loaders/imf_load.c
--- old/libxmp-4.7.3/src/loaders/imf_load.c     2026-09-11 04:10:10.000000000 
+0200
+++ new/libxmp-4.7.4/src/loaders/imf_load.c     2026-10-10 05:21:40.000000000 
+0200
@@ -254,7 +254,9 @@
     ih.magic = hio_read32b(f);
 
     /* Sanity check */
-    if (ih.len > 256 || ih.pat > 256 || ih.ins > 255) {
+    /* Maximum supported instruments by UI is 99, but Orpheus will load
+     * XMs with 128 and resave all 128 to IMF. */
+    if (ih.len > 256 || ih.pat > 256 || ih.ins > 128) {
        return -1;
     }
 
@@ -279,7 +281,7 @@
 
     mod->len = ih.len;
     mod->ins = ih.ins;
-    mod->smp = 1024;
+    mod->smp = MAX_SAMPLES;
     mod->pat = ih.pat;
 
     if (ih.flg & 0x01)
@@ -422,8 +424,9 @@
        ii.nsm = hio_read16l(f);
        ii.magic = hio_read32b(f);
 
-       /* Sanity check */
-       if (ii.nsm > 255)
+       /* Orpheus does not support more than 16 samples per instrument and
+        * will ignore any samples past 16 hexedited into a file. */
+       if (ii.nsm > 16)
            return -1;
 
        /* Imago Orpheus may emit blank instruments with a signature
@@ -471,9 +474,18 @@
 
        for (j = 0; j < ii.nsm; j++, smp_num++) {
            struct xmp_subinstrument *sub = &xxi->sub[j];
-           struct xmp_sample *xxs = &mod->xxs[smp_num];
+           struct xmp_sample *xxs;
            int sid;
 
+           /* Orpheus is limited to 200 samples, but in edge cases will
+            * emit files with more than that. Support growing the sample
+            * list for now just in case... */
+           if (smp_num >= mod->smp) {
+               if (libxmp_realloc_samples(m, mod->smp * 3 / 2) < 0)
+                   return -1;
+           }
+           xxs = &mod->xxs[smp_num];
+
            hio_read(is.name, 13, 1, f);
            hio_read(is.unused1, 3, 1, f);
            is.len = hio_read32l(f);
@@ -489,7 +501,9 @@
            is.dram = hio_read32l(f);
            is.magic = hio_read32b(f);
 
-           if (is.magic != MAGIC_IS10 && is.magic != MAGIC_IW10) {
+           /* The sample magic can also be four nuls (encountered importing
+            * an XM with >=13 instruments x 16 samples and resaving as IMF). */
+           if (is.magic != MAGIC_IS10 && is.magic != MAGIC_IW10 && is.magic != 
0) {
                D_(D_CRIT "unknown sample %d:%d magic %08x @ %ld", i, j,
                   is.magic, hio_tell(f));
                return -1;
@@ -526,7 +540,8 @@
                    (is.flg & IMF_SAMPLE_BIDI)   ? 'B' : '.',
                    (is.flg & IMF_SAMPLE_16BIT)  ? '+' : '.',
                    (is.flg & IMF_SAMPLE_DEFPAN) ? 'P' : '.',
-                   (is.magic == MAGIC_IS10) ? "IS" : "IW");
+                   (is.magic == MAGIC_IS10) ? "IS" :
+                   (is.magic == MAGIC_IW10) ? "IW" : "..");
 
            libxmp_c2spd_to_note(is.rate, &sub->xpo, &sub->fin);
 
@@ -539,14 +554,9 @@
        }
     }
 
-    mod->smp = smp_num;
-    mod->xxs = (struct xmp_sample *) realloc(mod->xxs, sizeof(struct 
xmp_sample) * mod->smp);
-    if (mod->xxs == NULL) {
-        return -1;
-    }
-    m->xtra = (struct extra_sample_data *) realloc(m->xtra, sizeof(struct 
extra_sample_data) * mod->smp);
-    if (m->xtra == NULL) {
-        return -1;
+    if (smp_num < mod->smp) {
+       if (libxmp_realloc_samples(m, smp_num) < 0)
+          return -1;
     }
 
     m->c4rate = C4_NTSC_RATE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxmp-4.7.3/src/loaders/rtm_load.c 
new/libxmp-4.7.4/src/loaders/rtm_load.c
--- old/libxmp-4.7.3/src/loaders/rtm_load.c     2026-09-11 04:10:10.000000000 
+0200
+++ new/libxmp-4.7.4/src/loaders/rtm_load.c     2026-10-10 05:21:40.000000000 
+0200
@@ -158,8 +158,6 @@
 }
 
 
-#define MAX_SAMP 1024
-
 #define FX_NONE                        0xff
 #define FX_EXTENDED_IT         0xfe
 #define FX_PORTA_UP_MOD                0xf1
@@ -497,7 +495,7 @@
        hio_seek(f, start + offset, SEEK_SET);
 
        /* ESTIMATED value! We don't know the actual value at this point */
-       mod->smp = MAX_SAMP;
+       mod->smp = MAX_SAMPLES;
 
        if (libxmp_init_instrument(m) < 0)
                return -1;

Reply via email to