Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hdf5 for openSUSE:Factory checked in 
at 2023-02-17 16:44:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hdf5 (Old)
 and      /work/SRC/openSUSE:Factory/.hdf5.new.22824 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hdf5"

Fri Feb 17 16:44:17 2023 rev:81 rq:1066251 version:1.12.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/hdf5/hdf5.changes        2022-11-16 
15:43:38.603892655 +0100
+++ /work/SRC/openSUSE:Factory/.hdf5.new.22824/hdf5.changes     2023-02-17 
16:44:27.886680087 +0100
@@ -1,0 +2,10 @@
+Mon Feb 13 09:18:05 UTC 2023 - Egbert Eich <e...@suse.com>
+
+- Fix CVE-2021-37501 - overflow in calculation of data buffer due to bogus
+  input file (bsc#1207973).
+  https://github.com/HDFGroup/hdf5/issues/2458
+  https://github.com/HDFGroup/hdf5/pull/2459
+  Check-for-overflow-when-calculating-on-disk-attribute-data-size-2459.patch
+  Remove-duplicate-code.patch
+
+-------------------------------------------------------------------

New:
----
  Check-for-overflow-when-calculating-on-disk-attribute-data-size-2459.patch
  Remove-duplicate-code.patch

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

Other differences:
------------------
++++++ hdf5.spec ++++++
--- /var/tmp/diff_new_pack.mRMx4q/_old  2023-02-17 16:44:30.546695067 +0100
+++ /var/tmp/diff_new_pack.mRMx4q/_new  2023-02-17 16:44:30.622695495 +0100
@@ -1,7 +1,7 @@
 #
-# spec file for package hdf5
+# spec file
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -450,6 +450,8 @@
 Patch109:       Hot-fix-for-CVE-2020-10812.patch
 Patch110:       Compound-datatypes-may-not-have-members-of-size-0.patch
 Patch111:       
H5IMget_image_info-H5Sget_simple_extent_dims-does-not-exceed-array-size.patch
+Patch112:       
Check-for-overflow-when-calculating-on-disk-attribute-data-size-2459.patch
+Patch113:       Remove-duplicate-code.patch
 
 BuildRequires:  fdupes
 %if 0%{?use_sz2}
@@ -704,6 +706,8 @@
 %patch109 -p1
 %patch110 -p1
 %patch111 -p1
+%patch112 -p1
+%patch113 -p1
 
 %if %{without hpc}
 # baselibs looks different for different flavors - generate it on the fly

++++++ 
Check-for-overflow-when-calculating-on-disk-attribute-data-size-2459.patch 
++++++
From: Egbert Eich <e...@suse.com>
Date: Sat Feb 11 13:54:17 2023 +0100
Subject: Check for overflow when calculating on-disk attribute data size (#2459)
Patch-mainline: Not yet
Git-repo: https://github.com/HDFGroup/hdf5
Git-commit: 0d026daa13a81be72495872f651c036fdc84ae5e
References: 

A bogus hdf5 file may contain dataspace messages with sizes
which lead to the on-disk data sizes to exceed what is addressable.
When calculating the size, make sure, the multiplication does not
overflow.
The test case was crafted in a way that the overflow caused the
size to be 0.

This fixes CVE-2021-37501 / Bug #2458.

Signed-off-by: Egbert Eich <e...@suse.com>
Signed-off-by: Egbert Eich <e...@suse.de>
---
 src/H5Oattr.c   |  3 +++
 src/H5private.h | 18 ++++++++++++++++++
 2 files changed, 21 insertions(+)
diff --git a/src/H5Oattr.c b/src/H5Oattr.c
index 4dee7aa187..3ef0b99aa4 100644
--- a/src/H5Oattr.c
+++ b/src/H5Oattr.c
@@ -235,6 +235,9 @@ H5O_attr_decode(H5F_t *f, H5O_t *open_oh, unsigned 
H5_ATTR_UNUSED mesg_flags, un
 
     /* Compute the size of the data */
     H5_CHECKED_ASSIGN(attr->shared->data_size, size_t, ds_size * 
(hsize_t)dt_size, hsize_t);
+    H5_CHECK_MUL_OVERFLOW(attr->shared->data_size, ds_size, dt_size,
+                         HGOTO_ERROR(H5E_RESOURCE, H5E_OVERFLOW, NULL,
+                                     "data size exceeds addressable range"))
 
     /* Go get the data */
     if (attr->shared->data_size) {
diff --git a/src/H5private.h b/src/H5private.h
index 931d7b9046..a115aee1a4 100644
--- a/src/H5private.h
+++ b/src/H5private.h
@@ -1605,6 +1605,24 @@ H5_DLL int     HDvasprintf(char **bufp, const char *fmt, 
va_list _ap);
 #define H5_CHECK_OVERFLOW(var, vartype, casttype)
 #endif /* NDEBUG */
 
+/*
+ * A macro for checking whether a multiplication has overflown
+ * r is assumed to be the result of a prior multiplication of a and b
+ */
+#define H5_CHECK_MUL_OVERFLOW(r, a, b, err)                                    
                              \
+    {                                                                          
                              \
+        bool mul_overflow = false;                                             
                              \
+        if (r != 0) {                                                          
                              \
+            if (r / a != b)                                                    
                              \
+                mul_overflow = true;                                           
                              \
+        } else {                                                               
                              \
+            if (a != 0 && b != 0)                                              
                              \
+                mul_overflow = true;                                           
                              \
+        }                                                                      
                              \
+        if (mul_overflow)                                                      
                              \
+            err                                                                
                              \
+    }
+
 /*
  * A macro for detecting over/under-flow when assigning between types
  */

++++++ Remove-duplicate-code.patch ++++++
From: Egbert Eich <e...@suse.com>
Date: Sat Feb 11 18:08:15 2023 +0100
Subject: Remove duplicate code
Patch-mainline: Not yet
Git-repo: https://github.com/HDFGroup/hdf5
Git-commit: 539bca81e2b5713b1c6c5723d742377fb92c1ac1
References: 

Signed-off-by: Egbert Eich <e...@suse.com>
Signed-off-by: Egbert Eich <e...@suse.de>
---
 src/H5Oattr.c | 4 ----
 1 file changed, 4 deletions(-)
diff --git a/src/H5Oattr.c b/src/H5Oattr.c
index 3ef0b99aa4..19d3abfb4c 100644
--- a/src/H5Oattr.c
+++ b/src/H5Oattr.c
@@ -222,10 +222,6 @@ H5O_attr_decode(H5F_t *f, H5O_t *open_oh, unsigned 
H5_ATTR_UNUSED mesg_flags, un
     else
         p += attr->shared->ds_size;
 
-    /* Get the datatype's size */
-    if (0 == (dt_size = H5T_get_size(attr->shared->dt)))
-        HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, NULL, "unable to get datatype size")
-
     /* Get the datatype & dataspace sizes */
     if (0 == (dt_size = H5T_get_size(attr->shared->dt)))
         HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, NULL, "unable to get datatype size")

Reply via email to