Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package squashfuse for openSUSE:Factory checked in at 2026-10-27 17:07:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/squashfuse (Old) and /work/SRC/openSUSE:Factory/.squashfuse.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "squashfuse" Tue Oct 27 17:07:43 2026 rev:4 rq:1393034 version:0.6.3 Changes: -------- --- /work/SRC/openSUSE:Factory/squashfuse/squashfuse.changes 2025-06-02 22:01:16.543000717 +0200 +++ /work/SRC/openSUSE:Factory/.squashfuse.new.2252680/squashfuse.changes 2026-10-27 17:08:29.395549547 +0100 @@ -1,0 +2,12 @@ +Sun Oct 18 05:34:07 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 0.6.3: + * Fix several memory bugs +- Update to version 0.6.2: + * Fix segfault with long extended attributes + * pkg-config --static now includes all private dependencies, + required for static linking +- Drop Group tags +- Use pkgconfig(libattr) BuildRequires + +------------------------------------------------------------------- Old: ---- squashfuse-0.6.1.tar.gz New: ---- squashfuse-0.6.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ squashfuse.spec ++++++ --- /var/tmp/diff_new_pack.g3zUdc/_old 2026-10-27 17:08:30.709604590 +0100 +++ /var/tmp/diff_new_pack.g3zUdc/_new 2026-10-27 17:08:30.713604757 +0100 @@ -1,7 +1,7 @@ # # spec file for package squashfuse # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # Copyright (c) 2025 Andreas Stieger <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -19,19 +19,18 @@ %define so_version 0 Name: squashfuse -Version: 0.6.1 +Version: 0.6.3 Release: 0 Summary: FUSE module to mount squashfs images License: BSD-2-Clause -Group: System/Filesystems URL: https://github.com/vasi/squashfuse Source: %{url}/releases/download/%{version}/squashfuse-%{version}.tar.gz BuildRequires: fdupes BuildRequires: gcc -BuildRequires: libattr-devel BuildRequires: pkgconfig BuildRequires: sed BuildRequires: pkgconfig(fuse3) +BuildRequires: pkgconfig(libattr) BuildRequires: pkgconfig(liblz4) BuildRequires: pkgconfig(liblzma) BuildRequires: pkgconfig(libzstd) @@ -62,7 +61,6 @@ %package devel Summary: FUSE module to mount squashfs images -Group: Development/Languages/C and C++ Requires: libsquashfuse%{so_version} = %{version} %description devel ++++++ squashfuse-0.6.1.tar.gz -> squashfuse-0.6.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/Makefile.in new/squashfuse-0.6.3/Makefile.in --- old/squashfuse-0.6.1/Makefile.in 2025-04-26 07:54:06.000000000 +0200 +++ new/squashfuse-0.6.3/Makefile.in 2026-08-24 00:28:51.000000000 +0200 @@ -745,8 +745,16 @@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ +pkgconfig_LZ4_CFLAGS = @pkgconfig_LZ4_CFLAGS@ +pkgconfig_LZ4_LIBS = @pkgconfig_LZ4_LIBS@ +pkgconfig_LZO_CFLAGS = @pkgconfig_LZO_CFLAGS@ +pkgconfig_LZO_LIBS = @pkgconfig_LZO_LIBS@ pkgconfig_XZ_CFLAGS = @pkgconfig_XZ_CFLAGS@ pkgconfig_XZ_LIBS = @pkgconfig_XZ_LIBS@ +pkgconfig_ZLIB_CFLAGS = @pkgconfig_ZLIB_CFLAGS@ +pkgconfig_ZLIB_LIBS = @pkgconfig_ZLIB_LIBS@ +pkgconfig_ZSTD_CFLAGS = @pkgconfig_ZSTD_CFLAGS@ +pkgconfig_ZSTD_LIBS = @pkgconfig_ZSTD_LIBS@ pkgconfig_fuse3_CFLAGS = @pkgconfig_fuse3_CFLAGS@ pkgconfig_fuse3_LIBS = @pkgconfig_fuse3_LIBS@ pkgconfig_fuse_CFLAGS = @pkgconfig_fuse_CFLAGS@ @@ -761,6 +769,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sq_decompressors = @sq_decompressors@ +sq_decompressors_pkgconf = @sq_decompressors_pkgconf@ sq_demo = @sq_demo@ sq_fusermount = @sq_fusermount@ sq_high_level = @sq_high_level@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/NEWS new/squashfuse-0.6.3/NEWS --- old/squashfuse-0.6.1/NEWS 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/NEWS 2026-08-24 00:28:29.000000000 +0200 @@ -1,3 +1,15 @@ +0.6.3 - 23 Aug 2026 + + * Fix several memory bugs + * Update Github actions to fix warnings + +0.6.2 - 1 May 2026 + + * Fix segfault with long extended attributes + * pkg-config --static squashfuse now includes all private dependencies, + which is required for static linking + * Update Windows and freebsd CI checks + 0.6.1 - 26 April 2025 * Build out-of-the-box with FUSE-T diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/configure new/squashfuse-0.6.3/configure --- old/squashfuse-0.6.1/configure 2025-04-26 07:54:05.000000000 +0200 +++ new/squashfuse-0.6.3/configure 2026-08-24 00:28:51.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for squashfuse 0.6.1. +# Generated by GNU Autoconf 2.71 for squashfuse 0.6.3. # # Report bugs to <[email protected]>. # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='squashfuse' PACKAGE_TARNAME='squashfuse' -PACKAGE_VERSION='0.6.1' -PACKAGE_STRING='squashfuse 0.6.1' +PACKAGE_VERSION='0.6.3' +PACKAGE_STRING='squashfuse 0.6.3' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -666,6 +666,7 @@ sq_demo sq_low_level sq_high_level +sq_decompressors_pkgconf sq_decompressors SIGTERM_HANDLER_FALSE SIGTERM_HANDLER_TRUE @@ -699,16 +700,24 @@ FUSE_LIBS ZSTD_CPPFLAGS ZSTD_LIBS +pkgconfig_ZSTD_LIBS +pkgconfig_ZSTD_CFLAGS LZ4_CPPFLAGS LZ4_LIBS +pkgconfig_LZ4_LIBS +pkgconfig_LZ4_CFLAGS LZO_CPPFLAGS LZO_LIBS +pkgconfig_LZO_LIBS +pkgconfig_LZO_CFLAGS XZ_CPPFLAGS XZ_LIBS pkgconfig_XZ_LIBS pkgconfig_XZ_CFLAGS ZLIB_CPPFLAGS ZLIB_LIBS +pkgconfig_ZLIB_LIBS +pkgconfig_ZLIB_CFLAGS AM_CFLAGS CPP pkgconfigdir @@ -881,8 +890,16 @@ PKG_CONFIG_PATH PKG_CONFIG_LIBDIR CPP +pkgconfig_ZLIB_CFLAGS +pkgconfig_ZLIB_LIBS pkgconfig_XZ_CFLAGS pkgconfig_XZ_LIBS +pkgconfig_LZO_CFLAGS +pkgconfig_LZO_LIBS +pkgconfig_LZ4_CFLAGS +pkgconfig_LZ4_LIBS +pkgconfig_ZSTD_CFLAGS +pkgconfig_ZSTD_LIBS pkgconfig_fuse3_CFLAGS pkgconfig_fuse3_LIBS pkgconfig_fuse_CFLAGS @@ -1437,7 +1454,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 squashfuse 0.6.1 to adapt to many kinds of systems. +\`configure' configures squashfuse 0.6.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1509,7 +1526,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of squashfuse 0.6.1:";; + short | recursive ) echo "Configuration of squashfuse 0.6.3:";; esac cat <<\_ACEOF @@ -1582,10 +1599,26 @@ PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path CPP C preprocessor + pkgconfig_ZLIB_CFLAGS + C compiler flags for pkgconfig_ZLIB, overriding pkg-config + pkgconfig_ZLIB_LIBS + linker flags for pkgconfig_ZLIB, overriding pkg-config pkgconfig_XZ_CFLAGS C compiler flags for pkgconfig_XZ, overriding pkg-config pkgconfig_XZ_LIBS linker flags for pkgconfig_XZ, overriding pkg-config + pkgconfig_LZO_CFLAGS + C compiler flags for pkgconfig_LZO, overriding pkg-config + pkgconfig_LZO_LIBS + linker flags for pkgconfig_LZO, overriding pkg-config + pkgconfig_LZ4_CFLAGS + C compiler flags for pkgconfig_LZ4, overriding pkg-config + pkgconfig_LZ4_LIBS + linker flags for pkgconfig_LZ4, overriding pkg-config + pkgconfig_ZSTD_CFLAGS + C compiler flags for pkgconfig_ZSTD, overriding pkg-config + pkgconfig_ZSTD_LIBS + linker flags for pkgconfig_ZSTD, overriding pkg-config pkgconfig_fuse3_CFLAGS C compiler flags for pkgconfig_fuse3, overriding pkg-config pkgconfig_fuse3_LIBS @@ -1666,7 +1699,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -squashfuse configure 0.6.1 +squashfuse configure 0.6.3 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2031,7 +2064,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by squashfuse $as_me 0.6.1, which was +It was created by squashfuse $as_me 0.6.3, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3423,7 +3456,7 @@ # Define the identity of the package. PACKAGE='squashfuse' - VERSION='0.6.1' + VERSION='0.6.3' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -14548,8 +14581,91 @@ then : sq_lib="z" + if test "x$sq_specified" = xno +then : + + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib" >&5 +printf %s "checking for zlib... " >&6; } + +if test -n "$pkgconfig_ZLIB_CFLAGS"; then + pkg_cv_pkgconfig_ZLIB_CFLAGS="$pkgconfig_ZLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_pkgconfig_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$pkgconfig_ZLIB_LIBS"; then + pkg_cv_pkgconfig_ZLIB_LIBS="$pkgconfig_ZLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_pkgconfig_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + pkgconfig_ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib" 2>&1` + else + pkgconfig_ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$pkgconfig_ZLIB_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + pkgconfig_ZLIB_CFLAGS=$pkg_cv_pkgconfig_ZLIB_CFLAGS + pkgconfig_ZLIB_LIBS=$pkg_cv_pkgconfig_ZLIB_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + LIBS="$LIBS $pkgconfig_ZLIB_LIBS" + # yes, CFLAGS, we want the preprocessor to work + CPPFLAGS="$CPPFLAGS $pkgconfig_ZLIB_CFLAGS" + sq_lib= + +fi + + +fi + sq_dec_ok=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing uncompress" >&5 printf %s "checking for library containing uncompress... " >&6; } @@ -14633,6 +14749,7 @@ sq_decompressors="$sq_decompressors ZLIB" sq_mksquashfs_compressors="$sq_mksquashfs_compressors gzip" + sq_decompressors_pkgconf="$sq_decompressors_pkgconf zlib" else $as_nop @@ -14901,6 +15018,7 @@ sq_decompressors="$sq_decompressors XZ" sq_mksquashfs_compressors="$sq_mksquashfs_compressors xz" + sq_decompressors_pkgconf="$sq_decompressors_pkgconf liblzma" else $as_nop @@ -15001,8 +15119,91 @@ then : sq_lib="lzo2" + if test "x$sq_specified" = xno +then : + + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzo2" >&5 +printf %s "checking for lzo2... " >&6; } + +if test -n "$pkgconfig_LZO_CFLAGS"; then + pkg_cv_pkgconfig_LZO_CFLAGS="$pkgconfig_LZO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lzo2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "lzo2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_pkgconfig_LZO_CFLAGS=`$PKG_CONFIG --cflags "lzo2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$pkgconfig_LZO_LIBS"; then + pkg_cv_pkgconfig_LZO_LIBS="$pkgconfig_LZO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lzo2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "lzo2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_pkgconfig_LZO_LIBS=`$PKG_CONFIG --libs "lzo2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + pkgconfig_LZO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lzo2" 2>&1` + else + pkgconfig_LZO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lzo2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$pkgconfig_LZO_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + pkgconfig_LZO_CFLAGS=$pkg_cv_pkgconfig_LZO_CFLAGS + pkgconfig_LZO_LIBS=$pkg_cv_pkgconfig_LZO_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + LIBS="$LIBS $pkgconfig_LZO_LIBS" + # yes, CFLAGS, we want the preprocessor to work + CPPFLAGS="$CPPFLAGS $pkgconfig_LZO_CFLAGS" + sq_lib= + +fi + + +fi + sq_dec_ok=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing lzo1x_decompress_safe" >&5 printf %s "checking for library containing lzo1x_decompress_safe... " >&6; } @@ -15086,6 +15287,7 @@ sq_decompressors="$sq_decompressors LZO" sq_mksquashfs_compressors="$sq_mksquashfs_compressors lzo" + sq_decompressors_pkgconf="$sq_decompressors_pkgconf lzo2" else $as_nop @@ -15186,8 +15388,91 @@ then : sq_lib="lz4" + if test "x$sq_specified" = xno +then : + + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for liblz4" >&5 +printf %s "checking for liblz4... " >&6; } + +if test -n "$pkgconfig_LZ4_CFLAGS"; then + pkg_cv_pkgconfig_LZ4_CFLAGS="$pkgconfig_LZ4_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblz4\""; } >&5 + ($PKG_CONFIG --exists --print-errors "liblz4") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_pkgconfig_LZ4_CFLAGS=`$PKG_CONFIG --cflags "liblz4" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$pkgconfig_LZ4_LIBS"; then + pkg_cv_pkgconfig_LZ4_LIBS="$pkgconfig_LZ4_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblz4\""; } >&5 + ($PKG_CONFIG --exists --print-errors "liblz4") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_pkgconfig_LZ4_LIBS=`$PKG_CONFIG --libs "liblz4" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + pkgconfig_LZ4_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "liblz4" 2>&1` + else + pkgconfig_LZ4_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "liblz4" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$pkgconfig_LZ4_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + pkgconfig_LZ4_CFLAGS=$pkg_cv_pkgconfig_LZ4_CFLAGS + pkgconfig_LZ4_LIBS=$pkg_cv_pkgconfig_LZ4_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + LIBS="$LIBS $pkgconfig_LZ4_LIBS" + # yes, CFLAGS, we want the preprocessor to work + CPPFLAGS="$CPPFLAGS $pkgconfig_LZ4_CFLAGS" + sq_lib= + +fi + + +fi + sq_dec_ok=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing LZ4_decompress_safe" >&5 printf %s "checking for library containing LZ4_decompress_safe... " >&6; } @@ -15271,6 +15556,7 @@ sq_decompressors="$sq_decompressors LZ4" sq_mksquashfs_compressors="$sq_mksquashfs_compressors lz4" + sq_decompressors_pkgconf="$sq_decompressors_pkgconf liblz4" else $as_nop @@ -15371,8 +15657,91 @@ then : sq_lib="zstd" + if test "x$sq_specified" = xno +then : + + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libzstd" >&5 +printf %s "checking for libzstd... " >&6; } + +if test -n "$pkgconfig_ZSTD_CFLAGS"; then + pkg_cv_pkgconfig_ZSTD_CFLAGS="$pkgconfig_ZSTD_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libzstd") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_pkgconfig_ZSTD_CFLAGS=`$PKG_CONFIG --cflags "libzstd" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$pkgconfig_ZSTD_LIBS"; then + pkg_cv_pkgconfig_ZSTD_LIBS="$pkgconfig_ZSTD_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libzstd") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_pkgconfig_ZSTD_LIBS=`$PKG_CONFIG --libs "libzstd" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + pkgconfig_ZSTD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libzstd" 2>&1` + else + pkgconfig_ZSTD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libzstd" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$pkgconfig_ZSTD_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + pkgconfig_ZSTD_CFLAGS=$pkg_cv_pkgconfig_ZSTD_CFLAGS + pkgconfig_ZSTD_LIBS=$pkg_cv_pkgconfig_ZSTD_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + LIBS="$LIBS $pkgconfig_ZSTD_LIBS" + # yes, CFLAGS, we want the preprocessor to work + CPPFLAGS="$CPPFLAGS $pkgconfig_ZSTD_CFLAGS" + sq_lib= + +fi + + +fi + sq_dec_ok=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing ZSTD_decompress" >&5 printf %s "checking for library containing ZSTD_decompress... " >&6; } @@ -15456,6 +15825,7 @@ sq_decompressors="$sq_decompressors ZSTD" sq_mksquashfs_compressors="$sq_mksquashfs_compressors zstd" + sq_decompressors_pkgconf="$sq_decompressors_pkgconf libzstd" else $as_nop @@ -18965,6 +19335,7 @@ + ac_config_files="$ac_config_files Makefile squashfuse.pc squashfuse_ll.pc tests/lib.sh ci/features" cat >confcache <<\_ACEOF @@ -19526,7 +19897,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by squashfuse $as_me 0.6.1, which was +This file was extended by squashfuse $as_me 0.6.3, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19594,7 +19965,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -squashfuse config.status 0.6.1 +squashfuse config.status 0.6.3 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/configure.ac new/squashfuse-0.6.3/configure.ac --- old/squashfuse-0.6.1/configure.ac 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/configure.ac 2026-08-24 00:28:29.000000000 +0200 @@ -1,4 +1,4 @@ -AC_INIT([squashfuse], [0.6.1], [[email protected]]) +AC_INIT([squashfuse], [0.6.3], [[email protected]]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h]) @@ -35,11 +35,11 @@ SQ_CHECK_DECL_SYMLINK # Decompression -SQ_CHECK_DECOMPRESS([ZLIB],[z],[uncompress],[zlib.h],,[gzip]) +SQ_CHECK_DECOMPRESS([ZLIB],[z],[uncompress],[zlib.h],[zlib],[gzip]) SQ_CHECK_DECOMPRESS([XZ],[lzma],[lzma_stream_buffer_decode],[lzma.h],[liblzma],[xz]) -SQ_CHECK_DECOMPRESS([LZO],[lzo2],[lzo1x_decompress_safe],[lzo/lzo1x.h],,[lzo]) -SQ_CHECK_DECOMPRESS([LZ4],[lz4],[LZ4_decompress_safe],[lz4.h],,[lz4]) -SQ_CHECK_DECOMPRESS([ZSTD],[zstd],[ZSTD_decompress],[zstd.h],,[zstd]) +SQ_CHECK_DECOMPRESS([LZO],[lzo2],[lzo1x_decompress_safe],[lzo/lzo1x.h],[lzo2],[lzo]) +SQ_CHECK_DECOMPRESS([LZ4],[lz4],[LZ4_decompress_safe],[lz4.h],[liblz4],[lz4]) +SQ_CHECK_DECOMPRESS([ZSTD],[zstd],[ZSTD_decompress],[zstd.h],[libzstd],[zstd]) AS_IF([test "x$sq_decompressors" = x], [AC_MSG_FAILURE([At least one decompression library must exist])]) @@ -124,6 +124,7 @@ [AC_DEFINE(SQFS_BROKEN_DIR_OFFSETS, 1, [Handle broken directory offsets])]) AC_SUBST([sq_decompressors]) +AC_SUBST([sq_decompressors_pkgconf]) AC_SUBST([sq_high_level]) AC_SUBST([sq_low_level]) AC_SUBST([sq_demo]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/decompress.c new/squashfuse-0.6.3/decompress.c --- old/squashfuse-0.6.1/decompress.c 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/decompress.c 2026-08-24 00:28:29.000000000 +0200 @@ -82,6 +82,9 @@ uint32_t uncompressed_size = 0, res; unsigned char lzma_header[LZMA_HEADER_SIZE]; + if (insz < LZMA_HEADER_SIZE) + return SQFS_ERR; + res = lzma_alone_decoder(&strm, MEMLIMIT); if (res != LZMA_OK) { lzma_end(&strm); @@ -89,7 +92,8 @@ } memcpy(lzma_header, in, LZMA_HEADER_SIZE); - uncompressed_size = *((uint32_t*)(lzma_header + LZMA_PROPS_SIZE)); + memcpy(&uncompressed_size, lzma_header + LZMA_PROPS_SIZE, + sizeof(uncompressed_size)); sqfs_swapin32(&uncompressed_size); if (uncompressed_size > *outsz) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/dir.c new/squashfuse-0.6.3/dir.c --- old/squashfuse-0.6.1/dir.c 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/dir.c 2026-08-24 00:28:29.000000000 +0200 @@ -150,7 +150,11 @@ entry->inode = ((uint64_t)dir->header.start_block << 16) + e.offset; /* e.inode_number is signed */ entry->inode_number = dir->header.inode_number + (int16_t)e.inode_number; - + + if (entry->name_size > SQUASHFS_NAME_LEN) { + *err = SQFS_ERR; + return false; + } *err = sqfs_dir_md_read(fs, dir, entry->name, sqfs_dentry_name_size(entry)); if (*err) return false; @@ -236,7 +240,9 @@ sqfs_err err; sqfs_dir_ff_name_t *args = (sqfs_dir_ff_name_t*)arg; size_t name_size = index->size + 1; - + if (name_size > SQUASHFS_NAME_LEN) + return SQFS_ERR; + if ((err = sqfs_md_read(fs, cur, args->name, name_size))) return err; args->name[name_size] = '\0'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/extract.c new/squashfuse-0.6.3/extract.c --- old/squashfuse-0.6.1/extract.c 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/extract.c 2026-08-24 00:28:29.000000000 +0200 @@ -4,6 +4,7 @@ #include "stat.h" #include <fcntl.h> +#include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -41,8 +42,7 @@ sqfs fs; char *image; char *path_to_extract; - char *prefix; - char prefixed_path_to_extract[1024]; + const char *prefix; struct stat st; prefix = "squashfs-root/"; @@ -67,6 +67,19 @@ while (sqfs_traverse_next(&trv, &err)) { if (!trv.dir_end) { if ((starts_with(path_to_extract, trv.path) != 0) || (strcmp("-a", path_to_extract) == 0)){ + size_t prefix_len = strlen(prefix); + size_t path_len = strlen(trv.path); + char *prefixed_path_to_extract; + + if (path_len > SIZE_MAX - prefix_len - 1) + die("path too long"); + prefixed_path_to_extract = malloc(prefix_len + path_len + 1); + if (!prefixed_path_to_extract) + die("malloc error"); + memcpy(prefixed_path_to_extract, prefix, prefix_len); + memcpy(prefixed_path_to_extract + prefix_len, trv.path, + path_len + 1); + fprintf(stderr, "trv.path: %s\n", trv.path); fprintf(stderr, "sqfs_inode_id: %llu\n", (unsigned long long)trv.entry.inode); sqfs_inode inode; @@ -74,9 +87,8 @@ die("sqfs_inode_get error"); fprintf(stderr, "inode.base.inode_type: %i\n", inode.base.inode_type); fprintf(stderr, "inode.xtra.reg.file_size: %llu\n", (unsigned long long)inode.xtra.reg.file_size); - strcpy(prefixed_path_to_extract, ""); - strcat(strcat(prefixed_path_to_extract, prefix), trv.path); - if (inode.base.inode_type == SQUASHFS_DIR_TYPE){ + if (inode.base.inode_type == SQUASHFS_DIR_TYPE || + inode.base.inode_type == SQUASHFS_LDIR_TYPE){ fprintf(stderr, "inode.xtra.dir.parent_inode: %ui\n", inode.xtra.dir.parent_inode); fprintf(stderr, "mkdir: %s/\n", prefixed_path_to_extract); if (access(prefixed_path_to_extract, F_OK ) == -1 ) { @@ -85,7 +97,8 @@ exit(1); } } - } else if (inode.base.inode_type == SQUASHFS_REG_TYPE){ + } else if (inode.base.inode_type == SQUASHFS_REG_TYPE || + inode.base.inode_type == SQUASHFS_LREG_TYPE){ fprintf(stderr, "Extract to: %s\n", prefixed_path_to_extract); if (sqfs_stat(&fs, &inode, &st) != 0) die("sqfs_stat error"); @@ -120,20 +133,29 @@ } fclose(f); chmod (prefixed_path_to_extract, st.st_mode); - } else if (inode.base.inode_type == SQUASHFS_SYMLINK_TYPE){ - size_t size = strlen(trv.path)+1; - char buf[size]; - int ret = sqfs_readlink(&fs, &inode, buf, &size); + } else if (inode.base.inode_type == SQUASHFS_SYMLINK_TYPE || + inode.base.inode_type == SQUASHFS_LSYMLINK_TYPE){ + size_t size; + char *buf; + int ret = sqfs_readlink(&fs, &inode, NULL, &size); + if (ret != 0) + die("sqfs_readlink error"); + buf = malloc(size); + if (!buf) + die("malloc error"); + ret = sqfs_readlink(&fs, &inode, buf, &size); if (ret != 0) die("sqfs_readlink error"); fprintf(stderr, "Symlink: %s to %s \n", prefixed_path_to_extract, buf); unlink(prefixed_path_to_extract); ret = sqfs_symlink(buf, prefixed_path_to_extract); + free(buf); if (ret != 0) die("symlink error"); } else { fprintf(stderr, "TODO: Implement inode.base.inode_type %i\n", inode.base.inode_type); } + free(prefixed_path_to_extract); fprintf(stderr, "\n"); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/m4/squashfuse_decompress.m4 new/squashfuse-0.6.3/m4/squashfuse_decompress.m4 --- old/squashfuse-0.6.1/m4/squashfuse_decompress.m4 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/m4/squashfuse_decompress.m4 2026-08-24 00:28:29.000000000 +0200 @@ -1,6 +1,6 @@ # Copyright (c) 2012 Dave Vasilevsky <[email protected]> # All rights reserved. -# +# # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: @@ -9,7 +9,7 @@ # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. -# +# # THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. @@ -29,7 +29,7 @@ # On success modify CPPFLAGS and LIBS and append NAME to sq_decompressors. AC_DEFUN([SQ_CHECK_DECOMPRESS],[ SQ_SAVE_FLAGS - + sq_want=yes sq_specified=no AC_ARG_WITH(m4_tolower($1), @@ -43,21 +43,22 @@ LIBS="$LIBS -L$withval/lib" ]) ]) - + sq_dec_ok= - AS_IF([test "x$sq_want" = xyes],[ + AS_IF([test "x$sq_want" = xyes],[ sq_lib="$2" m4_ifval($5,[AS_IF([test "x$sq_specified" = xno],[ SQ_PKG($1,$5,[sq_lib=],[:]) ])]) - + sq_dec_ok=yes AC_SEARCH_LIBS($3,[$sq_lib],,[sq_dec_ok=]) AS_IF([test "x$sq_dec_ok" = xyes],[AC_CHECK_HEADERS($4,,[sq_dec_ok=])]) - + AS_IF([test "x$sq_dec_ok" = xyes],[ sq_decompressors="$sq_decompressors $1" sq_mksquashfs_compressors="$sq_mksquashfs_compressors $6" + sq_decompressors_pkgconf="$sq_decompressors_pkgconf $5" ],[ AS_IF([test "x$sq_specified" = xyes], [AC_MSG_FAILURE([Asked for ]$1[, but it can't be found])]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/squashfuse.pc.in new/squashfuse-0.6.3/squashfuse.pc.in --- old/squashfuse-0.6.1/squashfuse.pc.in 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/squashfuse.pc.in 2026-08-24 00:28:29.000000000 +0200 @@ -8,5 +8,6 @@ Version: @VERSION@ Requires: +Requires.private: @sq_decompressors_pkgconf@ Libs: -L${libdir} -lsquashfuse Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/squashfuse_ll.pc.in new/squashfuse-0.6.3/squashfuse_ll.pc.in --- old/squashfuse-0.6.1/squashfuse_ll.pc.in 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/squashfuse_ll.pc.in 2026-08-24 00:28:29.000000000 +0200 @@ -7,6 +7,7 @@ Description: squashfuse low-level library to mount squashfs archives Version: @VERSION@ -Requires: -Libs: -L${libdir} -lsquashfuse -lsquashfuse_ll +Requires: squashfuse +Requires.private: fuse +Libs: -L${libdir} -lsquashfuse_ll Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/table.c new/squashfuse-0.6.3/table.c --- old/squashfuse-0.6.1/table.c 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/table.c 2026-08-24 00:28:29.000000000 +0200 @@ -44,6 +44,7 @@ bread = nblocks * sizeof(uint64_t); table->each = each; + table->count = count; if (!(table->blocks = malloc(bread))) goto err; if (sqfs_pread(fd, table->blocks, bread, start) != bread) @@ -67,11 +68,17 @@ sqfs_err sqfs_table_get(sqfs_table *table, sqfs *fs, size_t idx, void *buf) { sqfs_block *block; - size_t pos = idx * table->each; - size_t bnum = pos / SQUASHFS_METADATA_SIZE, - off = pos % SQUASHFS_METADATA_SIZE; - - sqfs_off_t bpos = table->blocks[bnum]; + size_t pos, bnum, off; + sqfs_off_t bpos; + + if (idx >= table->count) + return SQFS_ERR; + + pos = idx * table->each; + bnum = pos / SQUASHFS_METADATA_SIZE; + off = pos % SQUASHFS_METADATA_SIZE; + + bpos = table->blocks[bnum]; if (sqfs_md_cache(fs, &bpos, &block)) return SQFS_ERR; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/table.h new/squashfuse-0.6.3/table.h --- old/squashfuse-0.6.1/table.h 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/table.h 2026-08-24 00:28:29.000000000 +0200 @@ -29,6 +29,7 @@ typedef struct { size_t each; + size_t count; uint64_t *blocks; } sqfs_table; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squashfuse-0.6.1/xattr.c new/squashfuse-0.6.3/xattr.c --- old/squashfuse-0.6.1/xattr.c 2025-04-26 07:53:34.000000000 +0200 +++ new/squashfuse-0.6.3/xattr.c 2026-08-24 00:28:29.000000000 +0200 @@ -225,7 +225,7 @@ while (x->remain) { if ((err = sqfs_xattr_read(x))) goto done; - if (x->type != type && x->entry.size != len) + if (x->type != type || x->entry.size != len) continue; if ((err = sqfs_xattr_name(x, cmp, false))) goto done;
