Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package exfatprogs for openSUSE:Factory 
checked in at 2026-06-16 13:46:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/exfatprogs (Old)
 and      /work/SRC/openSUSE:Factory/.exfatprogs.new.1981 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "exfatprogs"

Tue Jun 16 13:46:07 2026 rev:25 rq:1359352 version:1.4.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/exfatprogs/exfatprogs.changes    2026-06-02 
16:01:16.483353768 +0200
+++ /work/SRC/openSUSE:Factory/.exfatprogs.new.1981/exfatprogs.changes  
2026-06-16 13:46:59.421110250 +0200
@@ -1,0 +2,10 @@
+Mon Jun 15 05:21:03 UTC 2026 - Michael Vetter <[email protected]>
+
+- Update to 1.4.2:
+  Changes:
+  * exfatprogs: install lsdosattr and chdosattr in /bin instead of
+    /sbin.
+  Bug fixes:
+  * dump.exfat: prevent heap buffer overflow in name parsing.
+
+-------------------------------------------------------------------

Old:
----
  1.4.1.tar.gz

New:
----
  1.4.2.tar.gz

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

Other differences:
------------------
++++++ exfatprogs.spec ++++++
--- /var/tmp/diff_new_pack.rtzMit/_old  2026-06-16 13:47:01.881213116 +0200
+++ /var/tmp/diff_new_pack.rtzMit/_new  2026-06-16 13:47:01.893213617 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           exfatprogs
-Version:        1.4.1
+Version:        1.4.2
 Release:        0
 Summary:        Utilities for exFAT file system maintenance
 License:        GPL-2.0-or-later
@@ -78,6 +78,6 @@
 %{_sbindir}/mkfs.exfat
 %{_sbindir}/tune.exfat
 %{_sbindir}/exfat2img
-%{_sbindir}/chdosattr
-%{_sbindir}/lsdosattr
+%{_bindir}/chdosattr
+%{_bindir}/lsdosattr
 

++++++ 1.4.1.tar.gz -> 1.4.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/.github/workflows/c-cpp.yml 
new/exfatprogs-1.4.2/.github/workflows/c-cpp.yml
--- old/exfatprogs-1.4.1/.github/workflows/c-cpp.yml    2026-05-28 
01:59:45.000000000 +0200
+++ new/exfatprogs-1.4.2/.github/workflows/c-cpp.yml    2026-06-15 
02:56:33.000000000 +0200
@@ -3,12 +3,20 @@
 on:
   push:
     branches:
-    - master
-    - exfat-next
+      - master
+      - exfat-next
+    paths-ignore:
+      - 'manpages/**'
+      - '**.md'
+      - '**.txt'
+      - '.editorconfig'
+      - '.gitignore'
+      - 'COPYING'
+      - 'NEWS'
   pull_request:
     branches:
-    - master
-    - exfat-next
+      - master
+      - exfat-next
 
 env:
   TEST_PART_TYPES: mbr gpt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/exfatprogs-1.4.1/.github/workflows/container-buildtests.yml 
new/exfatprogs-1.4.2/.github/workflows/container-buildtests.yml
--- old/exfatprogs-1.4.1/.github/workflows/container-buildtests.yml     
2026-05-28 01:59:45.000000000 +0200
+++ new/exfatprogs-1.4.2/.github/workflows/container-buildtests.yml     
2026-06-15 02:56:33.000000000 +0200
@@ -5,6 +5,14 @@
     branches:
       - master
       - exfat-next
+    paths-ignore:
+      - 'manpages/**'
+      - '**.md'
+      - '**.txt'
+      - '.editorconfig'
+      - '.gitignore'
+      - 'COPYING'
+      - 'NEWS'
   pull_request:
     branches:
       - master
@@ -24,6 +32,8 @@
             util-linux-dev
       - name: Autoconf and Configure
         run: ./autogen.sh && ./configure
+      - name: Distcheck
+        run: make -j "$(nproc)" distcheck
       - name: Build
         run: make -j$((`nproc`+1))
       - name: Install
@@ -47,6 +57,8 @@
         run: |
           export LDFLAGS="-fuse-ld=lld"
           ./autogen.sh && ./configure
+      - name: Distcheck
+        run: make -j "$(nproc)" distcheck
       - name: Build
         run:  make -j$((`nproc`+1))
       - name: Install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/.gitignore 
new/exfatprogs-1.4.2/.gitignore
--- old/exfatprogs-1.4.1/.gitignore     2026-05-28 01:59:45.000000000 +0200
+++ new/exfatprogs-1.4.2/.gitignore     2026-06-15 02:56:33.000000000 +0200
@@ -48,4 +48,5 @@
 /label/exfatlabel
 /mkfs/mkfs.exfat
 /tune/tune.exfat
-/upcase/*.bin
+/dosattr/lsdosattr
+/dosattr/chdosattr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/NEWS new/exfatprogs-1.4.2/NEWS
--- old/exfatprogs-1.4.1/NEWS   2026-05-28 01:59:45.000000000 +0200
+++ new/exfatprogs-1.4.2/NEWS   2026-06-15 02:56:33.000000000 +0200
@@ -1,3 +1,13 @@
+exfatprogs 1.4.2 - released 2026-06-15
+======================================
+
+CHANGES :
+ * exfatprogs: install lsdosattr and chdosattr in /bin instead of
+   /sbin.
+
+BUG FIXES :
+ * dump.exfat: prevent heap buffer overflow in name parsing.
+
 exfatprogs 1.4.1 - released 2026-05-28
 ======================================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/README.md 
new/exfatprogs-1.4.2/README.md
--- old/exfatprogs-1.4.1/README.md      2026-05-28 01:59:45.000000000 +0200
+++ new/exfatprogs-1.4.2/README.md      2026-06-15 02:56:33.000000000 +0200
@@ -10,11 +10,11 @@
 ## Building exfatprogs
 Install prerequisite packages:
 ```
-For Ubuntu:
-    sudo apt-get install autoconf libtool pkg-config
+For Debian, Ubuntu:
+    sudo apt-get install autoconf libtool automake make pkgconf libblkid-dev
 
 For Fedora, RHEL:
-    sudo yum install autoconf automake libtool
+    sudo dnf install autoconf automake libtool libblkid-devel
 ```
 
 Build steps:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/dosattr/Makefile.am 
new/exfatprogs-1.4.2/dosattr/Makefile.am
--- old/exfatprogs-1.4.1/dosattr/Makefile.am    2026-05-28 01:59:45.000000000 
+0200
+++ new/exfatprogs-1.4.2/dosattr/Makefile.am    2026-06-15 02:56:33.000000000 
+0200
@@ -3,7 +3,7 @@
 lsdosattr_LDADD = $(top_builddir)/lib/libexfat.a
 chdosattr_LDADD = $(top_builddir)/lib/libexfat.a
 
-sbin_PROGRAMS = lsdosattr chdosattr
+bin_PROGRAMS = lsdosattr chdosattr
 
 noinst_HEADERS = dosattr.h
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/dump/dump.c 
new/exfatprogs-1.4.2/dump/dump.c
--- old/exfatprogs-1.4.1/dump/dump.c    2026-05-28 01:59:45.000000000 +0200
+++ new/exfatprogs-1.4.2/dump/dump.c    2026-06-15 02:56:33.000000000 +0200
@@ -33,22 +33,6 @@
 #define dump_dentry_field_wrap(fmt, ...)       \
        exfat_info("   %-30s  " fmt "\n", "", ##__VA_ARGS__)
 
-static const unsigned char used_bit[] = {
-       0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3,/*  0 ~  19*/
-       2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4,/* 20 ~  39*/
-       2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5,/* 40 ~  59*/
-       4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,/* 60 ~  79*/
-       2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4,/* 80 ~  99*/
-       3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6,/*100 ~ 119*/
-       4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4,/*120 ~ 139*/
-       3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,/*140 ~ 159*/
-       2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5,/*160 ~ 179*/
-       4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5,/*180 ~ 199*/
-       3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6,/*200 ~ 219*/
-       5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,/*220 ~ 239*/
-       4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8             /*240 ~ 255*/
-};
-
 static void usage(void)
 {
        fprintf(stderr, "Usage: dump.exfat\n");
@@ -75,18 +59,6 @@
        {NULL,                  0,                      NULL,    0  }
 };
 
-static unsigned int exfat_count_used_clusters(unsigned char *bitmap,
-               unsigned long long bitmap_len)
-{
-       unsigned int count = 0;
-       unsigned long long i;
-
-       for (i = 0; i < bitmap_len; i++)
-               count += used_bit[bitmap[i]];
-
-       return count;
-}
-
 static int exfat_read_dentry(struct exfat *exfat, struct exfat_inode *inode,
                uint8_t type, struct exfat_dentry *dentry, off_t *dentry_off)
 {
@@ -226,9 +198,7 @@
                        return -EIO;
                }
 
-               used_clus = exfat_count_used_clusters(
-                               (unsigned char *)exfat->disk_bitmap,
-                               bitmap_len);
+               used_clus = exfat_count_used_clusters(exfat->disk_bitmap, 
(size_t)bitmap_len);
 
                exfat_info("\n---------------- Show the statistics 
----------------\n");
                dump_field("Cluster size", "%u", bd->cluster_size);
@@ -763,7 +733,7 @@
                }
 
                inode->dentry_set[i] = *dentry;
-               if (dentry->type == EXFAT_NAME)
+               if (dentry->type == EXFAT_NAME && i < 2 + MAX_NAME_DENTRIES)
                        memcpy(inode->name + (i - 2) * ENTRY_NAME_MAX,
                                        dentry->name_unicode,
                                        sizeof(dentry->name_unicode));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/fsck/fsck.c 
new/exfatprogs-1.4.2/fsck/fsck.c
--- old/exfatprogs-1.4.1/fsck/fsck.c    2026-05-28 01:59:45.000000000 +0200
+++ new/exfatprogs-1.4.2/fsck/fsck.c    2026-06-15 02:56:33.000000000 +0200
@@ -1766,18 +1766,6 @@
                        exfat_stat.fixed_count);
 }
 
-static clus_t count_bitmap_set_bits(struct exfat *exfat)
-{
-       clus_t count = 0;
-       size_t i, bytes = exfat->disk_bitmap_size;
-
-       for (i = 0; i + sizeof(uint32_t) <= bytes; i += sizeof(uint32_t))
-               count += __builtin_popcount(*(uint32_t *)(exfat->disk_bitmap + 
i));
-       for (; i < bytes; i++)
-               count += __builtin_popcount(exfat->disk_bitmap[i]);
-       return count;
-}
-
 static int do_put_mbr(const struct exfat_blk_dev *bd, struct pbr *bs, const 
bool recursive)
 {
        int ret = 0;
@@ -2078,7 +2066,8 @@
        }
 
        if (exfat_fsck.options & FSCK_OPTS_PROGRESS_BAR) {
-               used_clus_count = count_bitmap_set_bits(exfat_fsck.exfat);
+               used_clus_count = 
exfat_count_used_clusters(exfat_fsck.exfat->disk_bitmap,
+                               (size_t)exfat_fsck.exfat->disk_bitmap_size);
                progress_init(&exfat_fsck.progress_bar, 0, used_clus_count, 0);
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/include/libexfat.h 
new/exfatprogs-1.4.2/include/libexfat.h
--- old/exfatprogs-1.4.1/include/libexfat.h     2026-05-28 01:59:45.000000000 
+0200
+++ new/exfatprogs-1.4.2/include/libexfat.h     2026-06-15 02:56:33.000000000 
+0200
@@ -211,6 +211,10 @@
                           clus_t start_clu, clus_t *next);
 int exfat_bitmap_find_one(struct exfat *exfat, unsigned char *bmap,
                          clus_t start_clu, clus_t *next);
+/*
+ * Count ones in the bitmap. The function won't handle unaligned bitmaps.
+ */
+unsigned int exfat_count_used_clusters(const void *bitmap, const size_t 
bitmap_len);
 
 void show_version(void);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/include/version.h 
new/exfatprogs-1.4.2/include/version.h
--- old/exfatprogs-1.4.1/include/version.h      2026-05-28 01:59:45.000000000 
+0200
+++ new/exfatprogs-1.4.2/include/version.h      2026-06-15 02:56:33.000000000 
+0200
@@ -5,7 +5,7 @@
 
 #ifndef _VERSION_H
 
-#define EXFAT_PROGS_VERSION "1.4.1"
-#define EXFAT_PROGS_RELEASE_DATE "2026-05-28"
+#define EXFAT_PROGS_VERSION "1.4.2"
+#define EXFAT_PROGS_RELEASE_DATE "2026-06-15"
 
 #endif /* !_VERSION_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exfatprogs-1.4.1/lib/libexfat.c 
new/exfatprogs-1.4.2/lib/libexfat.c
--- old/exfatprogs-1.4.1/lib/libexfat.c 2026-05-28 01:59:45.000000000 +0200
+++ new/exfatprogs-1.4.2/lib/libexfat.c 2026-06-15 02:56:33.000000000 +0200
@@ -115,6 +115,22 @@
                                     start_clu, next, 1);
 }
 
+unsigned int exfat_count_used_clusters(const void *bitmap, const size_t 
bitmap_len)
+{
+       const size_t lc = bitmap_len / sizeof(unsigned long);
+       unsigned int ret = 0;
+
+       assert((uintptr_t)bitmap % sizeof(unsigned long) == 0);
+
+       for (size_t i = 0; i < lc; i++)
+               ret += __builtin_popcountl(((unsigned long*)bitmap)[i]);
+       for (size_t i = lc * sizeof(unsigned long); i < bitmap_len; i++)
+               ret += __builtin_popcountl(((unsigned char*)bitmap)[i]);
+
+       return ret;
+}
+
+
 wchar_t exfat_bad_char(wchar_t w)
 {
        return (w < 0x0020)

Reply via email to