Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package openjph for openSUSE:Factory checked 
in at 2026-02-18 17:05:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openjph (Old)
 and      /work/SRC/openSUSE:Factory/.openjph.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openjph"

Wed Feb 18 17:05:20 2026 rev:16 rq:1333528 version:0.26.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/openjph/openjph.changes  2026-01-21 
14:13:59.766435701 +0100
+++ /work/SRC/openSUSE:Factory/.openjph.new.1977/openjph.changes        
2026-02-18 17:06:22.628089413 +0100
@@ -1,0 +2,23 @@
+Tue Feb 17 07:46:58 UTC 2026 - Petr Gajdos <[email protected]>
+
+- Update to 0.26.3:
+  * Bug fix out of range values #248
+    Using versions 0.26.1 and 0.26.2 is not recommended
+
+-------------------------------------------------------------------
+Tue Feb 17 06:28:32 UTC 2026 - Michael Vetter <[email protected]>
+
+- Update to 0.26.2:
+  * Fix a bug when the number of tiles is 0, and, in
+    resilient mode, when the the start of tile-part segment
+    (SOT) has an incorrect index, Isot #245
+
+-------------------------------------------------------------------
+Mon Feb 16 09:04:35 UTC 2026 - Michael Vetter <[email protected]>
+
+- Update to 0.26.1:
+  * Add ARM CPU feature detection for FreeBSD and OpenBSD #238
+  * Bug fix: some HTJ2K codestream parameters are now qualified before being
+    used #244
+
+-------------------------------------------------------------------

Old:
----
  0.26.0.tar.gz

New:
----
  0.26.3.tar.gz

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

Other differences:
------------------
++++++ openjph.spec ++++++
--- /var/tmp/diff_new_pack.M4i71z/_old  2026-02-18 17:06:24.716176321 +0100
+++ /var/tmp/diff_new_pack.M4i71z/_new  2026-02-18 17:06:24.740177320 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           openjph
-Version:        0.26.0
+Version:        0.26.3
 Release:        0
 Summary:        An implementation of JPEG2000 Part-15
 License:        BSD-2-Clause

++++++ 0.26.0.tar.gz -> 0.26.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OpenJPH-0.26.0/src/core/codestream/ojph_codestream_local.cpp 
new/OpenJPH-0.26.3/src/core/codestream/ojph_codestream_local.cpp
--- old/OpenJPH-0.26.0/src/core/codestream/ojph_codestream_local.cpp    
2025-12-24 05:08:37.000000000 +0100
+++ new/OpenJPH-0.26.3/src/core/codestream/ojph_codestream_local.cpp    
2026-02-17 07:41:51.000000000 +0100
@@ -118,7 +118,9 @@
       num_tiles.h = sz.get_image_extent().y - sz.get_tile_offset().y;
       num_tiles.h = ojph_div_ceil(num_tiles.h, sz.get_tile_size().h);
       if (num_tiles.area() > 65535)
-        OJPH_ERROR(0x00030011, "number of tiles cannot exceed 65535");
+        OJPH_ERROR(0x00030011, "the number of tiles cannot exceed 65535");
+      if (num_tiles.area() == 0)
+        OJPH_ERROR(0x00030012, "the number of tiles cannot be 0");
 
       //allocate tiles
       allocator->pre_alloc_obj<tile>((size_t)num_tiles.area());
@@ -891,175 +893,181 @@
         if (sot.read(infile, resilient))
         {
           ui64 tile_start_location = (ui64)infile->tell();
+          bool skip_tile = false;
 
-          if (sot.get_tile_index() > (int)num_tiles.area())
+          if (sot.get_tile_index() >= (int)num_tiles.area())
           {
-            if (resilient)
+            if (resilient) {
               OJPH_INFO(0x00030061, "wrong tile index")
+              skip_tile = true; // skip the faulty tile
+            }
             else
               OJPH_ERROR(0x00030061, "wrong tile index")
           }
 
-          if (sot.get_tile_part_index())
-          { //tile part
-            if (sot.get_num_tile_parts() &&
-              sot.get_tile_part_index() >= sot.get_num_tile_parts())
-            {
-              if (resilient)
-                OJPH_INFO(0x00030062,
-                  "error in tile part number, should be smaller than total"
-                  " number of tile parts")
-              else
-                OJPH_ERROR(0x00030062,
-                  "error in tile part number, should be smaller than total"
-                  " number of tile parts")
-            }
-
-            bool sod_found = false;
-            ui16 other_tile_part_markers[7] = { SOT, POC, PPT, PLT, COM,
-              NLT, SOD };
-            while (true)
-            {
-              int marker_idx = 0;
-              int result = 0;
-              marker_idx = find_marker(infile, other_tile_part_markers + 1, 6);
-              if (marker_idx == 0)
-                result = skip_marker(infile, "POC",
-                  "POC marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 1)
-                result = skip_marker(infile, "PPT",
-                  "PPT marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 2)
-                //Skipping PLT marker segment;this should not cause any issues
-                result = skip_marker(infile, "PLT", NULL,
-                  OJPH_MSG_NO_MSG, resilient);
-              else if (marker_idx == 3)
-                result = skip_marker(infile, "COM", NULL,
-                  OJPH_MSG_NO_MSG, resilient);
-              else if (marker_idx == 4)
-                result = skip_marker(infile, "NLT",
-                  "NLT marker in tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 5)
-              {
-                sod_found = true;
-                break;
-              }
-
-              if (marker_idx == -1) //marker not found
-              {
-                if (resilient)
-                  OJPH_INFO(0x00030063,
-                    "File terminated early before start of data is found"
-                    " for tile indexed %d and tile part %d",
-                    sot.get_tile_index(), sot.get_tile_part_index())
-                else
-                  OJPH_ERROR(0x00030063,
-                    "File terminated early before start of data is found"
-                    " for tile indexed %d and tile part %d",
-                    sot.get_tile_index(), sot.get_tile_part_index())
-                break;
-              }
-              if (result == -1) //file terminated during marker seg. skipping
+          if (!skip_tile)
+          {
+            if (sot.get_tile_part_index())
+            { //tile part
+              if (sot.get_num_tile_parts() &&
+                sot.get_tile_part_index() >= sot.get_num_tile_parts())
               {
                 if (resilient)
-                  OJPH_INFO(0x00030064,
-                    "File terminated during marker segment skipping")
+                  OJPH_INFO(0x00030062,
+                    "error in tile part number, should be smaller than total"
+                    " number of tile parts")
                 else
-                  OJPH_ERROR(0x00030064,
-                    "File terminated during marker segment skipping")
-                break;
-              }
-            }
-            if (sod_found)
-              tiles[sot.get_tile_index()].parse_tile_header(sot, infile,
-                tile_start_location);
-          }
-          else
-          { //first tile part
-            bool sod_found = false;
-            ui16 first_tile_part_markers[12] = { SOT, COD, COC, QCD, QCC, RGN,
-              POC, PPT, PLT, COM, NLT, SOD };
-            while (true)
-            {
-              int marker_idx = 0;
-              int result = 0;
-              marker_idx = find_marker(infile, first_tile_part_markers+1, 11);
-              if (marker_idx == 0)
-                result = skip_marker(infile, "COD",
-                  "COD marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 1)
-                result = skip_marker(infile, "COC",
-                  "COC marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 2)
-                result = skip_marker(infile, "QCD",
-                  "QCD marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 3)
-                result = skip_marker(infile, "QCC",
-                  "QCC marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 4)
-                result = skip_marker(infile, "RGN",
-                  "RGN marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 5)
-                result = skip_marker(infile, "POC",
-                  "POC marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 6)
-                result = skip_marker(infile, "PPT",
-                  "PPT marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 7)
-                //Skipping PLT marker segment;this should not cause any issues
-                result = skip_marker(infile, "PLT", NULL,
-                  OJPH_MSG_NO_MSG, resilient);
-              else if (marker_idx == 8)
-                result = skip_marker(infile, "COM", NULL,
-                  OJPH_MSG_NO_MSG, resilient);
-              else if (marker_idx == 9)
-                result = skip_marker(infile, "NLT",
-                  "PPT marker segment in a tile is not supported yet",
-                  OJPH_MSG_WARN, resilient);
-              else if (marker_idx == 10)
-              {
-                sod_found = true;
-                break;
+                  OJPH_ERROR(0x00030062,
+                    "error in tile part number, should be smaller than total"
+                    " number of tile parts")
               }
 
-              if (marker_idx == -1) //marker not found
+              bool sod_found = false;
+              ui16 other_tile_part_markers[7] = { SOT, POC, PPT, PLT, COM,
+                NLT, SOD };
+              while (true)
               {
-                if (resilient)
-                  OJPH_INFO(0x00030065,
-                    "File terminated early before start of data is found"
-                    " for tile indexed %d and tile part %d",
-                    sot.get_tile_index(), sot.get_tile_part_index())
-                else
-                  OJPH_ERROR(0x00030065,
-                    "File terminated early before start of data is found"
-                    " for tile indexed %d and tile part %d",
-                    sot.get_tile_index(), sot.get_tile_part_index())
-                break;
+                int marker_idx = 0;
+                int result = 0;
+                marker_idx = find_marker(infile, other_tile_part_markers+1, 6);
+                if (marker_idx == 0)
+                  result = skip_marker(infile, "POC",
+                    "POC marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 1)
+                  result = skip_marker(infile, "PPT",
+                    "PPT marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 2)
+                  //Skipping PLT marker segment;this should not cause any 
issues
+                  result = skip_marker(infile, "PLT", NULL,
+                    OJPH_MSG_NO_MSG, resilient);
+                else if (marker_idx == 3)
+                  result = skip_marker(infile, "COM", NULL,
+                    OJPH_MSG_NO_MSG, resilient);
+                else if (marker_idx == 4)
+                  result = skip_marker(infile, "NLT",
+                    "NLT marker in tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 5)
+                {
+                  sod_found = true;
+                  break;
+                }
+
+                if (marker_idx == -1) //marker not found
+                {
+                  if (resilient)
+                    OJPH_INFO(0x00030063,
+                      "File terminated early before start of data is found"
+                      " for tile indexed %d and tile part %d",
+                      sot.get_tile_index(), sot.get_tile_part_index())
+                  else
+                    OJPH_ERROR(0x00030063,
+                      "File terminated early before start of data is found"
+                      " for tile indexed %d and tile part %d",
+                      sot.get_tile_index(), sot.get_tile_part_index())
+                  break;
+                }
+                if (result == -1) //file terminated during marker seg. skipping
+                {
+                  if (resilient)
+                    OJPH_INFO(0x00030064,
+                      "File terminated during marker segment skipping")
+                  else
+                    OJPH_ERROR(0x00030064,
+                      "File terminated during marker segment skipping")
+                  break;
+                }
               }
-              if (result == -1) //file terminated during marker seg. skipping
+              if (sod_found)
+                tiles[sot.get_tile_index()].parse_tile_header(sot, infile,
+                  tile_start_location);
+            }
+            else
+            { //first tile part
+              bool sod_found = false;
+              ui16 first_tile_part_markers[12] = { SOT, COD, COC, QCD, QCC, 
RGN,
+                POC, PPT, PLT, COM, NLT, SOD };
+              while (true)
               {
-                if (resilient)
-                  OJPH_INFO(0x00030066,
-                    "File terminated during marker segment skipping")
-                else
-                  OJPH_ERROR(0x00030066,
-                    "File terminated during marker segment skipping")
-                break;
+                int marker_idx = 0;
+                int result = 0;
+                marker_idx = find_marker(infile, first_tile_part_markers+1, 
11);
+                if (marker_idx == 0)
+                  result = skip_marker(infile, "COD",
+                    "COD marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 1)
+                  result = skip_marker(infile, "COC",
+                    "COC marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 2)
+                  result = skip_marker(infile, "QCD",
+                    "QCD marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 3)
+                  result = skip_marker(infile, "QCC",
+                    "QCC marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 4)
+                  result = skip_marker(infile, "RGN",
+                    "RGN marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 5)
+                  result = skip_marker(infile, "POC",
+                    "POC marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 6)
+                  result = skip_marker(infile, "PPT",
+                    "PPT marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 7)
+                  //Skipping PLT marker segment;this should not cause any 
issues
+                  result = skip_marker(infile, "PLT", NULL,
+                    OJPH_MSG_NO_MSG, resilient);
+                else if (marker_idx == 8)
+                  result = skip_marker(infile, "COM", NULL,
+                    OJPH_MSG_NO_MSG, resilient);
+                else if (marker_idx == 9)
+                  result = skip_marker(infile, "NLT",
+                    "PPT marker segment in a tile is not supported yet",
+                    OJPH_MSG_WARN, resilient);
+                else if (marker_idx == 10)
+                {
+                  sod_found = true;
+                  break;
+                }
+
+                if (marker_idx == -1) //marker not found
+                {
+                  if (resilient)
+                    OJPH_INFO(0x00030065,
+                      "File terminated early before start of data is found"
+                      " for tile indexed %d and tile part %d",
+                      sot.get_tile_index(), sot.get_tile_part_index())
+                  else
+                    OJPH_ERROR(0x00030065,
+                      "File terminated early before start of data is found"
+                      " for tile indexed %d and tile part %d",
+                      sot.get_tile_index(), sot.get_tile_part_index())
+                  break;
+                }
+                if (result == -1) //file terminated during marker seg. skipping
+                {
+                  if (resilient)
+                    OJPH_INFO(0x00030066,
+                      "File terminated during marker segment skipping")
+                  else
+                    OJPH_ERROR(0x00030066,
+                      "File terminated during marker segment skipping")
+                  break;
+                }
               }
+              if (sod_found)
+                tiles[sot.get_tile_index()].parse_tile_header(sot, infile,
+                  tile_start_location);
             }
-            if (sod_found)
-              tiles[sot.get_tile_index()].parse_tile_header(sot, infile,
-                tile_start_location);
           }
         }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenJPH-0.26.0/src/core/codestream/ojph_params.cpp 
new/OpenJPH-0.26.3/src/core/codestream/ojph_params.cpp
--- old/OpenJPH-0.26.0/src/core/codestream/ojph_params.cpp      2025-12-24 
05:08:37.000000000 +0100
+++ new/OpenJPH-0.26.3/src/core/codestream/ojph_params.cpp      2026-02-17 
07:41:51.000000000 +0100
@@ -735,6 +735,12 @@
           OJPH_ERROR(0x00050052, "error reading SIZ marker");
         if (file->read(&cptr[c].YRsiz, 1) != 1)
           OJPH_ERROR(0x00050053, "error reading SIZ marker");
+        if ((cptr[c].SSiz & 0x7F) > 37)
+          OJPH_ERROR(0x00050054, "Wrong SIZ-SSiz value of %d", cptr[c].SSiz);
+        if (cptr[c].XRsiz == 0)
+          OJPH_ERROR(0x00050055, "Wrong SIZ-XRsiz value of %d", cptr[c].XRsiz);
+        if (cptr[c].YRsiz == 0)
+          OJPH_ERROR(0x00050056, "Wrong SIZ-YRsiz value of %d", cptr[c].YRsiz);
       }
 
       ws_kern_support_needed = (Rsiz & 0x20) != 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenJPH-0.26.0/src/core/openjph/ojph_arch.h 
new/OpenJPH-0.26.3/src/core/openjph/ojph_arch.h
--- old/OpenJPH-0.26.0/src/core/openjph/ojph_arch.h     2025-12-24 
05:08:37.000000000 +0100
+++ new/OpenJPH-0.26.3/src/core/openjph/ojph_arch.h     2026-02-17 
07:41:51.000000000 +0100
@@ -108,6 +108,10 @@
 #define OJPH_OS_ANDROID
 #elif (defined __linux)
 #define OJPH_OS_LINUX
+#elif (defined __FreeBSD__)
+#define OJPH_OS_FREEBSD
+#elif (defined __OpenBSD__)
+#define OJPH_OS_OPENBSD
 #endif
 
   /////////////////////////////////////////////////////////////////////////////
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenJPH-0.26.0/src/core/openjph/ojph_version.h 
new/OpenJPH-0.26.3/src/core/openjph/ojph_version.h
--- old/OpenJPH-0.26.0/src/core/openjph/ojph_version.h  2025-12-24 
05:08:37.000000000 +0100
+++ new/OpenJPH-0.26.3/src/core/openjph/ojph_version.h  2026-02-17 
07:41:51.000000000 +0100
@@ -35,4 +35,4 @@
 
 #define OPENJPH_VERSION_MAJOR 0
 #define OPENJPH_VERSION_MINOR 26
-#define OPENJPH_VERSION_PATCH 0
+#define OPENJPH_VERSION_PATCH 3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenJPH-0.26.0/src/core/others/ojph_arch.cpp 
new/OpenJPH-0.26.3/src/core/others/ojph_arch.cpp
--- old/OpenJPH-0.26.0/src/core/others/ojph_arch.cpp    2025-12-24 
05:08:37.000000000 +0100
+++ new/OpenJPH-0.26.3/src/core/others/ojph_arch.cpp    2026-02-17 
07:41:51.000000000 +0100
@@ -161,23 +161,32 @@
   }
   #elif defined(OJPH_ARCH_ARM)
 
-    #ifndef OJPH_OS_LINUX  //Windows/Apple/Android
+    #if !defined(OJPH_OS_LINUX) && !defined(OJPH_OS_FREEBSD) && 
!defined(OJPH_OS_OPENBSD) // Windows/Apple/Android
 
     bool init_cpu_ext_level(int& level) {
       level = ARM_CPU_EXT_LEVEL_ASIMD;
       return true;
     }
 
-    #else  // Linux
+    #else  // Linux/FreeBSD/OpenBSD
 
       #if defined(__aarch64__) || defined(_M_ARM64) // 64-bit ARM
 
         #include <sys/auxv.h>
-        #include <asm/hwcap.h>
+        #ifdef OJPH_OS_LINUX
+          #include <asm/hwcap.h>
+        #endif
 
         bool init_cpu_ext_level(int& level) {
-          unsigned long hwcaps = getauxval(AT_HWCAP);
-          unsigned long hwcaps2 = getauxval(AT_HWCAP2);
+          #ifdef OJPH_OS_LINUX
+            unsigned long hwcaps = getauxval(AT_HWCAP);
+            unsigned long hwcaps2 = getauxval(AT_HWCAP2);
+          #else
+            unsigned long hwcaps = 0;
+            unsigned long hwcaps2 = 0;
+            elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps));
+            elf_aux_info(AT_HWCAP2, &hwcaps2, sizeof(hwcaps2));
+          #endif
 
           level = ARM_CPU_EXT_LEVEL_GENERIC;
           if (hwcaps & HWCAP_ASIMD) {
@@ -194,10 +203,17 @@
       #else // 32-bit ARM
 
         #include <sys/auxv.h>
-        #include <asm/hwcap.h>
+        #ifdef OJPH_OS_LINUX
+          #include <asm/hwcap.h>
+        #endif
 
         bool init_cpu_ext_level(int& level) {
-          unsigned long hwcaps = getauxval(AT_HWCAP);
+          #ifdef OJPH_OS_LINUX
+            unsigned long hwcaps = getauxval(AT_HWCAP);
+          #else
+            unsigned long hwcaps = 0;
+            elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps));
+          #endif
           level = ARM_CPU_EXT_LEVEL_GENERIC;
           if (hwcaps & HWCAP_NEON)
             level = ARM_CPU_EXT_LEVEL_NEON;

Reply via email to