Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libfsxfs for openSUSE:Factory checked in at 2026-09-02 17:00:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libfsxfs (Old) and /work/SRC/openSUSE:Factory/.libfsxfs.new.1265 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libfsxfs" Wed Sep 2 17:00:38 2026 rev:17 rq:1375221 version:20260901 Changes: -------- --- /work/SRC/openSUSE:Factory/libfsxfs/libfsxfs.changes 2026-07-02 20:12:56.124624504 +0200 +++ /work/SRC/openSUSE:Factory/.libfsxfs.new.1265/libfsxfs.changes 2026-09-02 17:00:48.299299718 +0200 @@ -1,0 +2,6 @@ +Tue Sep 1 19:49:27 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 20260901 + * Support most of XFS versions 1 thru 3 + +------------------------------------------------------------------- Old: ---- libfsxfs-experimental-20260703.tar.gz libfsxfs-experimental-20260703.tar.gz.asc New: ---- libfsxfs-experimental-20260901.tar.gz libfsxfs-experimental-20260901.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libfsxfs.spec ++++++ --- /var/tmp/diff_new_pack.zxJ50t/_old 2026-09-02 17:00:49.135328437 +0200 +++ /var/tmp/diff_new_pack.zxJ50t/_new 2026-09-02 17:00:49.137328506 +0200 @@ -20,7 +20,7 @@ Name: libfsxfs %define lname libfsxfs1 -Version: 20260703 +Version: 20260901 Release: 0 Summary: Library and tools for accessing the SGI X File System (XFS) License: LGPL-3.0-or-later @@ -36,14 +36,14 @@ BuildRequires: python-rpm-macros BuildRequires: pkgconfig(fuse3) BuildRequires: pkgconfig(libbfio) >= 20260623 -BuildRequires: pkgconfig(libcdata) >= 20260612 -BuildRequires: pkgconfig(libcerror) >= 20260612 -BuildRequires: pkgconfig(libcfile) >= 20260615 -BuildRequires: pkgconfig(libclocale) >= 20260612 -BuildRequires: pkgconfig(libcnotify) >= 20260612 -BuildRequires: pkgconfig(libcpath) >= 20260621 -BuildRequires: pkgconfig(libcsplit) >= 20260612 -BuildRequires: pkgconfig(libcthreads) >= 20260615 +BuildRequires: pkgconfig(libcdata) >= 20260703 +BuildRequires: pkgconfig(libcerror) >= 20260703 +BuildRequires: pkgconfig(libcfile) >= 20260704 +BuildRequires: pkgconfig(libclocale) >= 20260703 +BuildRequires: pkgconfig(libcnotify) >= 20260703 +BuildRequires: pkgconfig(libcpath) >= 20260703 +BuildRequires: pkgconfig(libcsplit) >= 20260703 +BuildRequires: pkgconfig(libcthreads) >= 20260703 BuildRequires: pkgconfig(libfcache) >= 20260520 BuildRequires: pkgconfig(libfcrypto) >= 20260521 BuildRequires: pkgconfig(libfdata) >= 20260521 ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.zxJ50t/_old 2026-09-02 17:00:49.169329605 +0200 +++ /var/tmp/diff_new_pack.zxJ50t/_new 2026-09-02 17:00:49.172329709 +0200 @@ -1,5 +1,5 @@ -mtime: 1782984869 -commit: 85861bb6546a68b285e32ed750700d3589940dfaff2918192581eb0dc47d89ac +mtime: 1788292447 +commit: 2e30a6e8dc5688caf8508c02a9a73c4814ec4c7fee322d9c48f0e4ea33cdb0ab url: https://src.opensuse.org/security-forensics/libfsxfs 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-09-01 21:54:07.000000000 +0200 @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild ++++++ libfsxfs-experimental-20260703.tar.gz -> libfsxfs-experimental-20260901.tar.gz ++++++ ++++ 1643 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/README new/libfsxfs-20260901/README --- old/libfsxfs-20260703/README 2026-06-26 07:41:33.000000000 +0200 +++ new/libfsxfs-20260901/README 2026-08-30 18:22:04.000000000 +0200 @@ -7,12 +7,15 @@ Read-only supported XFS formats: -* version 4 and 5 +* version 1, 2, 3, 4 and 5 * extended attributes Unsupported XFS format features: -* XFS version 1, 2 or 3 +* Feature flags: XFS_SB_VERSION_QUOTABIT | +* Incompatible feature flags: XFS_SB_FEAT_INCOMPAT_META_UUID, + XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR, XFS_SB_FEAT_INCOMPAT_METADIR, + XFS_SB_FEAT_INCOMPAT_ZONED, XFS_SB_FEAT_INCOMPAT_ZONE_GAPS For more information see: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/common/config.h new/libfsxfs-20260901/common/config.h --- old/libfsxfs-20260703/common/config.h 2026-07-02 07:17:28.000000000 +0200 +++ new/libfsxfs-20260901/common/config.h 2026-09-01 20:50:23.000000000 +0200 @@ -94,9 +94,6 @@ /* Define to 1 if you have the 'fgetws' function. */ #define HAVE_FGETWS 1 -/* Define to 1 if you have the 'fmemopen' function. */ -#define HAVE_FMEMOPEN 1 - /* Define to 1 if you have the 'fopen' function. */ #define HAVE_FOPEN 1 @@ -514,6 +511,9 @@ /* Define to 1 if you have the 'time' function. */ #define HAVE_TIME 1 +/* Define to 1 if you have the 'tmpfile' function. */ +#define HAVE_TMPFILE 1 + /* Define to 1 if you have the 'towlower' function. */ #define HAVE_TOWLOWER 1 @@ -608,7 +608,7 @@ #define PACKAGE_NAME "libfsxfs" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libfsxfs 20260703" +#define PACKAGE_STRING "libfsxfs 20260901" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libfsxfs" @@ -617,7 +617,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "20260703" +#define PACKAGE_VERSION "20260901" /* The size of 'int', as computed by sizeof. */ #define SIZEOF_INT 4 @@ -646,7 +646,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "20260703" +#define VERSION "20260901" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/common/config.h.in new/libfsxfs-20260901/common/config.h.in --- old/libfsxfs-20260703/common/config.h.in 2026-07-02 07:17:21.000000000 +0200 +++ new/libfsxfs-20260901/common/config.h.in 2026-09-01 20:50:15.000000000 +0200 @@ -93,9 +93,6 @@ /* Define to 1 if you have the 'fgetws' function. */ #undef HAVE_FGETWS -/* Define to 1 if you have the 'fmemopen' function. */ -#undef HAVE_FMEMOPEN - /* Define to 1 if you have the 'fopen' function. */ #undef HAVE_FOPEN @@ -513,6 +510,9 @@ /* Define to 1 if you have the 'time' function. */ #undef HAVE_TIME +/* Define to 1 if you have the 'tmpfile' function. */ +#undef HAVE_TMPFILE + /* Define to 1 if you have the 'towlower' function. */ #undef HAVE_TOWLOWER diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/configure.ac new/libfsxfs-20260901/configure.ac --- old/libfsxfs-20260703/configure.ac 2026-07-02 07:09:07.000000000 +0200 +++ new/libfsxfs-20260901/configure.ac 2026-09-01 13:25:22.000000000 +0200 @@ -2,7 +2,7 @@ AC_INIT( [libfsxfs], - [20260703], + [20260901], [https://github.com/libyal/libfsxfs/issues]) AC_CONFIG_SRCDIR( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/dpkg/changelog new/libfsxfs-20260901/dpkg/changelog --- old/libfsxfs-20260703/dpkg/changelog 2026-07-02 07:17:28.000000000 +0200 +++ new/libfsxfs-20260901/dpkg/changelog 2026-09-01 20:50:23.000000000 +0200 @@ -1,5 +1,5 @@ -libfsxfs (20260703-1) unstable; urgency=low +libfsxfs (20260901-1) unstable; urgency=low * Auto-generated - -- Joachim Metz <[email protected]> Thu, 02 Jul 2026 07:17:27 +0200 + -- Joachim Metz <[email protected]> Tue, 01 Sep 2026 20:50:22 +0200 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/fsxfstools/fsxfsmount.c new/libfsxfs-20260901/fsxfstools/fsxfsmount.c --- old/libfsxfs-20260703/fsxfstools/fsxfsmount.c 2026-07-01 12:16:52.000000000 +0200 +++ new/libfsxfs-20260901/fsxfstools/fsxfsmount.c 2026-08-27 16:52:38.000000000 +0200 @@ -488,9 +488,14 @@ goto on_error; } +#if defined( HAVE_LIBFUSE3 ) fuse_unmount( fsxfsmount_fuse_handle ); - +#else + fuse_unmount( + mount_point, + fsxfsmount_fuse_channel ); +#endif fuse_destroy( fsxfsmount_fuse_handle ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/fsxfstools/info_handle.c new/libfsxfs-20260901/fsxfstools/info_handle.c --- old/libfsxfs-20260703/fsxfstools/info_handle.c 2026-06-26 07:42:29.000000000 +0200 +++ new/libfsxfs-20260901/fsxfstools/info_handle.c 2026-08-29 03:59:27.000000000 +0200 @@ -1220,6 +1220,12 @@ notify_stream, "\t\t(XFS_SB_FEAT_INCOMPAT_ZONED)\n" ); } + if( ( incompatible_features_flags & 0x00000400UL ) != 0 ) + { + fprintf( + notify_stream, + "\t\t(XFS_SB_FEAT_INCOMPAT_ZONE_GAPS)\n" ); + } } /* Prints the journal incompatible features flags to the notify stream diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/include/libfsxfs/definitions.h new/libfsxfs-20260901/include/libfsxfs/definitions.h --- old/libfsxfs-20260703/include/libfsxfs/definitions.h 2026-07-02 07:17:28.000000000 +0200 +++ new/libfsxfs-20260901/include/libfsxfs/definitions.h 2026-09-01 20:50:23.000000000 +0200 @@ -24,11 +24,11 @@ #include <libfsxfs/types.h> -#define LIBFSXFS_VERSION 20260703 +#define LIBFSXFS_VERSION 20260901 /* The version string */ -#define LIBFSXFS_VERSION_STRING "20260703" +#define LIBFSXFS_VERSION_STRING "20260901" /* The file access * bit 1 set to 1 for read access diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcdata/libcdata_definitions.h new/libfsxfs-20260901/libcdata/libcdata_definitions.h --- old/libfsxfs-20260703/libcdata/libcdata_definitions.h 2026-07-02 07:16:44.000000000 +0200 +++ new/libfsxfs-20260901/libcdata/libcdata_definitions.h 2026-09-01 20:49:41.000000000 +0200 @@ -35,11 +35,11 @@ */ #else -#define LIBCDATA_VERSION 20260612 +#define LIBCDATA_VERSION 20260703 /* The libcdata version string */ -#define LIBCDATA_VERSION_STRING "20260612" +#define LIBCDATA_VERSION_STRING "20260703" /* The comparison function definitions */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcerror/libcerror_definitions.h new/libfsxfs-20260901/libcerror/libcerror_definitions.h --- old/libfsxfs-20260703/libcerror/libcerror_definitions.h 2026-07-02 07:16:47.000000000 +0200 +++ new/libfsxfs-20260901/libcerror/libcerror_definitions.h 2026-09-01 20:49:43.000000000 +0200 @@ -35,11 +35,11 @@ */ #else -#define LIBCERROR_VERSION 20260612 +#define LIBCERROR_VERSION 20260703 /* The libcerror version string */ -#define LIBCERROR_VERSION_STRING "20260612" +#define LIBCERROR_VERSION_STRING "20260703" /* The error domains */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcerror/libcerror_error.c new/libfsxfs-20260901/libcerror/libcerror_error.c --- old/libfsxfs-20260703/libcerror/libcerror_error.c 2026-07-02 07:16:47.000000000 +0200 +++ new/libfsxfs-20260901/libcerror/libcerror_error.c 2026-09-01 20:49:43.000000000 +0200 @@ -497,7 +497,7 @@ int message_index = 0; int print_count = 0; -#if defined( WINAPI ) +#if defined( WINAPI ) || defined( __MINGW32__ ) const char *format_string = "%" PRIs_SYSTEM "\r\n"; #else const char *format_string = "%" PRIs_SYSTEM "\n"; @@ -649,7 +649,7 @@ int print_count = 0; int total_print_count = 0; -#if defined( WINAPI ) +#if defined( WINAPI ) || defined( __MINGW32__ ) const char *format_string = "%" PRIs_SYSTEM "\r\n"; #else const char *format_string = "%" PRIs_SYSTEM "\n"; @@ -748,7 +748,7 @@ { if( string_index > 0 ) { -#if defined( WINAPI ) +#if defined( WINAPI ) || defined( __MINGW32__ ) if( ( string_index + 2 ) >= size ) { return( -1 ); @@ -759,7 +759,7 @@ { return( -1 ); } -#endif /* defined( WINAPI ) */ +#endif /* defined( WINAPI ) || defined( __MINGW32__ ) */ string[ string_index++ ] = (system_character_t) '\n'; string[ string_index ] = (system_character_t) 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcfile/libcfile_definitions.h new/libfsxfs-20260901/libcfile/libcfile_definitions.h --- old/libfsxfs-20260703/libcfile/libcfile_definitions.h 2026-07-02 07:16:50.000000000 +0200 +++ new/libfsxfs-20260901/libcfile/libcfile_definitions.h 2026-09-01 20:49:45.000000000 +0200 @@ -35,11 +35,11 @@ */ #else -#define LIBCFILE_VERSION 20260615 +#define LIBCFILE_VERSION 20260704 /* The libcfile version string */ -#define LIBCFILE_VERSION_STRING "20260615" +#define LIBCFILE_VERSION_STRING "20260704" /* The file access flags * bit 1 set to 1 for read access diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcfile/libcfile_file.c new/libfsxfs-20260901/libcfile/libcfile_file.c --- old/libfsxfs-20260703/libcfile/libcfile_file.c 2026-07-02 07:16:50.000000000 +0200 +++ new/libfsxfs-20260901/libcfile/libcfile_file.c 2026-09-01 20:49:45.000000000 +0200 @@ -284,23 +284,13 @@ uint32_t *error_code, libcerror_error_t **error ) { -#if ( WINVER >= 0x0600 ) - FILE_ALIGNMENT_INFO file_alignment_information; -#else - DISK_GEOMETRY_EX disk_geometry; - - DWORD response_count = 0; -#endif - libcfile_internal_file_t *internal_file = NULL; static char *function = "libcfile_file_open_with_error_code"; - BOOL result = 0; DWORD file_io_access_flags = 0; DWORD file_io_creation_flags = 0; DWORD file_io_shared_flags = 0; DWORD flags_and_attributes = 0; size_t filename_length = 0; - size_t sector_size = 0; ssize_t read_count = 0; if( file == NULL ) @@ -514,156 +504,18 @@ libcerror_error_free( error ); } -#if ( WINVER >= 0x0600 ) - result = GetFileInformationByHandleEx( - internal_file->handle, - FileAlignmentInfo, - (void *) &file_alignment_information, - (DWORD) sizeof( FILE_ALIGNMENT_INFO ) ); - - if( result == FALSE ) + if( libcfile_internal_file_determine_block_size( + internal_file, + error ) != 1 ) { - *error_code = (uint32_t) GetLastError(); - - libcerror_system_set_error( + libcerror_error_set( error, - LIBCERROR_ERROR_DOMAIN_IO, - LIBCERROR_IO_ERROR_IOCTL_FAILED, - *error_code, - "%s: unable to retrieve file alignment information.", + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_GET_FAILED, + "%s: unable to determine block size.", function ); -#if defined( HAVE_DEBUG_OUTPUT ) - if( libcnotify_verbose != 0 ) - { - if( ( error != NULL ) - && ( *error != NULL ) ) - { - libcnotify_print_error_backtrace( - *error ); - } - } -#endif - libcerror_error_free( - error ); - } - else - { - if( (size_t) file_alignment_information.AlignmentRequirement >= (size_t) SSIZE_MAX ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_ARGUMENTS, - LIBCERROR_ARGUMENT_ERROR_VALUE_OUT_OF_BOUNDS, - "%s: invalid file alignment requirement value out of bounds.", - function ); - - return( -1 ); - } - sector_size = (size_t) file_alignment_information.AlignmentRequirement; - } -#else - result = DeviceIoControl( - internal_file->handle, - IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, - NULL, - 0, - &disk_geometry, - (DWORD) sizeof( DISK_GEOMETRY_EX ), - &response_count, - NULL ); - - if( result == FALSE ) - { - *error_code = (uint32_t) GetLastError(); - - if( *error_code != ERROR_MORE_DATA ) - { - libcerror_system_set_error( - error, - LIBCERROR_ERROR_DOMAIN_IO, - LIBCERROR_IO_ERROR_IOCTL_FAILED, - *error_code, - "%s: unable to retrieve disk geometry.", - function ); - -#if defined( HAVE_DEBUG_OUTPUT ) - if( libcnotify_verbose != 0 ) - { - if( ( error != NULL ) - && ( *error != NULL ) ) - { - libcnotify_print_error_backtrace( - *error ); - } - } -#endif - libcerror_error_free( - error ); - } - else if( response_count < sizeof( DISK_GEOMETRY_EX ) ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_RUNTIME, - LIBCERROR_RUNTIME_ERROR_VALUE_OUT_OF_BOUNDS, - "%s: invalid response count value out of bounds.", - function ); - -#if defined( HAVE_DEBUG_OUTPUT ) - if( libcnotify_verbose != 0 ) - { - if( ( error != NULL ) - && ( *error != NULL ) ) - { - libcnotify_print_error_backtrace( - *error ); - } - } -#endif - libcerror_error_free( - error ); - } - else - { - result = TRUE; - } - } - if( result == TRUE ) - { -#if ( SSIZE_MAX < UINT32_MAX ) - if( (size_t) disk_geometry.Geometry.BytesPerSector >= (size_t) SSIZE_MAX ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_ARGUMENTS, - LIBCERROR_ARGUMENT_ERROR_VALUE_OUT_OF_BOUNDS, - "%s: invalid geometry bytes per sector value out of bounds.", - function ); - - return( -1 ); - } -#endif - sector_size = (size_t) disk_geometry.Geometry.BytesPerSector; - } -#endif /* ( WINVER >= 0x0600 ) */ - - if( sector_size != 0 ) - { - if( libcfile_internal_file_set_block_size( - internal_file, - (size_t) sector_size, - error ) != 1 ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_RUNTIME, - LIBCERROR_RUNTIME_ERROR_SET_FAILED, - "%s: unable to set block size.", - function ); - - return( -1 ); - } + return( -1 ); } } #endif /* defined( LIBCFILE_HAVE_IO_CONTROL ) */ @@ -701,6 +553,9 @@ uint32_t *error_code, libcerror_error_t **error ) { +#if defined( __FreeBSD__ ) || defined( __NetBSD__ ) || defined( __OpenBSD__ ) + struct stat file_statistics; +#endif libcfile_internal_file_t *internal_file = NULL; static char *function = "libcfile_file_open_with_error_code"; int file_io_flags = 0; @@ -838,6 +693,38 @@ } return( -1 ); } +#if defined( __FreeBSD__ ) || defined( __NetBSD__ ) || defined( __OpenBSD__ ) + if( fstat( + internal_file->descriptor, + &file_statistics ) != 0 ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_GET_FAILED, + "%s: unable to retrieve file statistics.", + function ); + + return( -1 ); + } + if( S_ISBLK( file_statistics.st_mode ) ) + { + if( libcfile_internal_file_determine_block_size( + internal_file, + error ) != 1 ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_GET_FAILED, + "%s: unable to determine block size.", + function ); + + return( -1 ); + } + } +#endif /* defined( __FreeBSD__ ) || defined( __NetBSD__ ) || defined( __OpenBSD__ ) */ + if( libcfile_internal_file_get_size( internal_file, &( internal_file->size ), @@ -909,23 +796,13 @@ uint32_t *error_code, libcerror_error_t **error ) { -#if ( WINVER >= 0x0600 ) - FILE_ALIGNMENT_INFO file_alignment_information; -#else - DISK_GEOMETRY_EX disk_geometry; - - DWORD response_count = 0; -#endif - libcfile_internal_file_t *internal_file = NULL; static char *function = "libcfile_file_open_wide_with_error_code"; - BOOL result = 0; DWORD file_io_access_flags = 0; DWORD file_io_creation_flags = 0; DWORD file_io_shared_flags = 0; DWORD flags_and_attributes = 0; size_t filename_length = 0; - size_t sector_size = 0; ssize_t read_count = 0; if( file == NULL ) @@ -1139,156 +1016,18 @@ libcerror_error_free( error ); } -#if ( WINVER >= 0x0600 ) - result = GetFileInformationByHandleEx( - internal_file->handle, - FileAlignmentInfo, - (void *) &file_alignment_information, - (DWORD) sizeof( FILE_ALIGNMENT_INFO ) ); - - if( result == FALSE ) + if( libcfile_internal_file_determine_block_size( + internal_file, + error ) != 1 ) { - *error_code = (uint32_t) GetLastError(); - - libcerror_system_set_error( + libcerror_error_set( error, - LIBCERROR_ERROR_DOMAIN_IO, - LIBCERROR_IO_ERROR_IOCTL_FAILED, - *error_code, - "%s: unable to retrieve file alignment information.", + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_GET_FAILED, + "%s: unable to determine block size.", function ); -#if defined( HAVE_DEBUG_OUTPUT ) - if( libcnotify_verbose != 0 ) - { - if( ( error != NULL ) - && ( *error != NULL ) ) - { - libcnotify_print_error_backtrace( - *error ); - } - } -#endif - libcerror_error_free( - error ); - } - else - { - if( (size_t) file_alignment_information.AlignmentRequirement >= (size_t) SSIZE_MAX ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_ARGUMENTS, - LIBCERROR_ARGUMENT_ERROR_VALUE_OUT_OF_BOUNDS, - "%s: invalid file alignment requirement value out of bounds.", - function ); - - return( -1 ); - } - sector_size = (size_t) file_alignment_information.AlignmentRequirement; - } -#else - result = DeviceIoControl( - internal_file->handle, - IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, - NULL, - 0, - &disk_geometry, - (DWORD) sizeof( DISK_GEOMETRY_EX ), - &response_count, - NULL ); - - if( result == FALSE ) - { - *error_code = (uint32_t) GetLastError(); - - if( *error_code != ERROR_MORE_DATA ) - { - libcerror_system_set_error( - error, - LIBCERROR_ERROR_DOMAIN_IO, - LIBCERROR_IO_ERROR_IOCTL_FAILED, - *error_code, - "%s: unable to retrieve disk geometry.", - function ); - -#if defined( HAVE_DEBUG_OUTPUT ) - if( libcnotify_verbose != 0 ) - { - if( ( error != NULL ) - && ( *error != NULL ) ) - { - libcnotify_print_error_backtrace( - *error ); - } - } -#endif - libcerror_error_free( - error ); - } - else if( response_count < sizeof( DISK_GEOMETRY_EX ) ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_RUNTIME, - LIBCERROR_RUNTIME_ERROR_VALUE_OUT_OF_BOUNDS, - "%s: invalid response count value out of bounds.", - function ); - -#if defined( HAVE_DEBUG_OUTPUT ) - if( libcnotify_verbose != 0 ) - { - if( ( error != NULL ) - && ( *error != NULL ) ) - { - libcnotify_print_error_backtrace( - *error ); - } - } -#endif - libcerror_error_free( - error ); - } - else - { - result = TRUE; - } - } - if( result == TRUE ) - { -#if ( SSIZE_MAX < UINT32_MAX ) - if( (size_t) disk_geometry.Geometry.BytesPerSector >= (size_t) SSIZE_MAX ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_ARGUMENTS, - LIBCERROR_ARGUMENT_ERROR_VALUE_OUT_OF_BOUNDS, - "%s: invalid geometry bytes per sector value out of bounds.", - function ); - - return( -1 ); - } -#endif - sector_size = (size_t) disk_geometry.Geometry.BytesPerSector; - } -#endif /* ( WINVER >= 0x0600 ) */ - - if( sector_size != 0 ) - { - if( libcfile_internal_file_set_block_size( - internal_file, - (size_t) sector_size, - error ) != 1 ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_RUNTIME, - LIBCERROR_RUNTIME_ERROR_SET_FAILED, - "%s: unable to set block size.", - function ); - - return( -1 ); - } + return( -1 ); } } #endif /* defined( LIBCFILE_HAVE_IO_CONTROL ) */ @@ -1326,6 +1065,9 @@ uint32_t *error_code, libcerror_error_t **error ) { +#if defined( __FreeBSD__ ) || defined( __NetBSD__ ) || defined( __OpenBSD__ ) + struct stat file_statistics; +#endif libcfile_internal_file_t *internal_file = NULL; static char *function = "libcfile_file_open_wide_with_error_code"; char *narrow_filename = NULL; @@ -1462,6 +1204,11 @@ */ file_io_flags |= O_CLOEXEC; #endif +#if defined( __MINGW32__ ) + /* Ensure the file descriptor is opened in binary mode + */ + file_io_flags |= O_BINARY; +#endif internal_file->descriptor = open( narrow_filename, file_io_flags, @@ -1514,6 +1261,38 @@ } goto on_error; } +#if defined( __FreeBSD__ ) || defined( __NetBSD__ ) || defined( __OpenBSD__ ) + if( fstat( + internal_file->descriptor, + &file_statistics ) != 0 ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_GET_FAILED, + "%s: unable to retrieve file statistics.", + function ); + + return( -1 ); + } + if( S_ISBLK( file_statistics.st_mode ) ) + { + if( libcfile_internal_file_determine_block_size( + internal_file, + error ) != 1 ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_GET_FAILED, + "%s: unable to determine block size.", + function ); + + return( -1 ); + } + } +#endif /* defined( __FreeBSD__ ) || defined( __NetBSD__ ) || defined( __OpenBSD__ ) */ + if( libcfile_internal_file_get_size( internal_file, &( internal_file->size ), @@ -4636,6 +4415,411 @@ return( 1 ); } +/* Determines the block size + * Returns the 1 if successful, 0 if not or -1 on error + */ +int libcfile_internal_file_determine_block_size( + libcfile_internal_file_t *internal_file, + libcerror_error_t **error ) +{ +#if defined( WINAPI ) +#if ( WINVER >= 0x0600 ) + FILE_ALIGNMENT_INFO file_alignment_information; +#else + DISK_GEOMETRY disk_geometry; + DISK_GEOMETRY_EX disk_geometry_extended; +#endif +#endif /* defined( WINAPI ) */ + + static char *function = "libcfile_internal_file_get_bytes_per_sector"; + +#if defined( WINAPI ) + uint32_t bytes_per_sector = 0; + uint32_t error_code = 0; + BOOL result = 0; + +#if ( WINVER < 0x0600 ) + DWORD response_count = 0; +#endif + +#else +#if defined( BLKSSZGET ) || defined( DIOCGSECTORSIZE ) || defined( DKIOCGETBLOCKSIZE ) + ssize_t read_count = 0; + uint32_t error_code = 0; +#endif +#if !defined( BLKSSZGET ) && defined( DIOCGSECTORSIZE ) + u_int bytes_per_sector = 0; +#else + uint32_t bytes_per_sector = 0; +#endif +#endif /* defined( WINAPI ) */ + + if( internal_file == NULL ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_ARGUMENTS, + LIBCERROR_ARGUMENT_ERROR_INVALID_VALUE, + "%s: invalid file.", + function ); + + return( -1 ); + } +#if defined( WINAPI ) +#if ( WINVER >= 0x0600 ) + result = GetFileInformationByHandleEx( + internal_file->handle, + FileAlignmentInfo, + (void *) &file_alignment_information, + (DWORD) sizeof( FILE_ALIGNMENT_INFO ) ); + + if( result == FALSE ) + { + error_code = (uint32_t) GetLastError(); + + libcerror_system_set_error( + error, + LIBCERROR_ERROR_DOMAIN_IO, + LIBCERROR_IO_ERROR_IOCTL_FAILED, + error_code, + "%s: unable to retrieve file alignment information.", + function ); + +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + if( ( error != NULL ) + && ( *error != NULL ) ) + { + libcnotify_print_error_backtrace( + *error ); + } + } +#endif + libcerror_error_free( + error ); + } + else + { + if( (size64_t) file_alignment_information.AlignmentRequirement >= (size64_t) UINT32_MAX ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_ARGUMENTS, + LIBCERROR_ARGUMENT_ERROR_VALUE_OUT_OF_BOUNDS, + "%s: invalid file alignment requirement value out of bounds.", + function ); + + return( -1 ); + } + bytes_per_sector = (size_t) file_alignment_information.AlignmentRequirement; + } +#else + result = DeviceIoControl( + internal_file->handle, + IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, + NULL, + 0, + &disk_geometry_extended, + (DWORD) sizeof( DISK_GEOMETRY_EX ), + &response_count, + NULL ); + + if( result == FALSE ) + { + error_code = (uint32_t) GetLastError(); + + if( error_code == ERROR_NOT_SUPPORTED ) + { + } + else if( error_code != ERROR_MORE_DATA ) + { + libcerror_system_set_error( + error, + LIBCERROR_ERROR_DOMAIN_IO, + LIBCERROR_IO_ERROR_IOCTL_FAILED, + error_code, + "%s: unable to query device for: IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.", + function ); + +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + if( ( error != NULL ) + && ( *error != NULL ) ) + { + libcnotify_print_error_backtrace( + *error ); + } + } +#endif + libcerror_error_free( + error ); + } + else if( response_count < sizeof( DISK_GEOMETRY_EX ) ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_VALUE_OUT_OF_BOUNDS, + "%s: invalid response count to query: IOCTL_DISK_GET_DRIVE_GEOMETRY_EX value out of bounds.", + function ); + +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + if( ( error != NULL ) + && ( *error != NULL ) ) + { + libcnotify_print_error_backtrace( + *error ); + } + } +#endif + libcerror_error_free( + error ); + } + else + { + result = TRUE; + } + } + if( result == TRUE ) + { + bytes_per_sector = (uint32_t) disk_geometry_extended.Geometry.BytesPerSector; + } + else if( error_code == ERROR_NOT_SUPPORTED ) + { + /* A floppy device does not support IOCTL_DISK_GET_DRIVE_GEOMETRY_EX + */ + result = DeviceIoControl( + internal_file->handle, + IOCTL_DISK_GET_DRIVE_GEOMETRY, + NULL, + 0, + &disk_geometry, + sizeof( DISK_GEOMETRY ), + &response_count, + NULL ); + + if( result == FALSE ) + { + error_code = (uint32_t) GetLastError(); + + if( error_code != ERROR_MORE_DATA ) + { + libcerror_system_set_error( + error, + LIBCERROR_ERROR_DOMAIN_IO, + LIBCERROR_IO_ERROR_IOCTL_FAILED, + error_code, + "%s: unable to query device for: IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.", + function ); + +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + if( ( error != NULL ) + && ( *error != NULL ) ) + { + libcnotify_print_error_backtrace( + *error ); + } + } +#endif + libcerror_error_free( + error ); + } + else if( response_count < sizeof( DISK_GEOMETRY ) ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_VALUE_OUT_OF_BOUNDS, + "%s: invalid response count to query: IOCTL_DISK_GET_DRIVE_GEOMETRY value out of bounds.", + function ); + +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + if( ( error != NULL ) + && ( *error != NULL ) ) + { + libcnotify_print_error_backtrace( + *error ); + } + } +#endif + libcerror_error_free( + error ); + } + else + { + result = TRUE; + } + } + if( result == TRUE ) + { + bytes_per_sector = (uint32_t) disk_geometry.BytesPerSector; + } + } +#endif /* ( WINVER >= 0x0600 ) */ + +#elif defined( BLKSSZGET ) + read_count = libcfile_internal_file_io_control_read_with_error_code( + internal_file, + BLKSSZGET, + NULL, + 0, + (uint8_t *) &bytes_per_sector, + 4, + &error_code, + error ); + + if( read_count == -1 ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_IO, + LIBCERROR_IO_ERROR_IOCTL_FAILED, + "%s: unable to query device for: BLKSSZGET.", + function ); + +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + if( ( error != NULL ) + && ( *error != NULL ) ) + { + libcnotify_print_error_backtrace( + *error ); + } + } +#endif + libcerror_error_free( + error ); + } +#elif defined( DIOCGSECTORSIZE ) + read_count = libcfile_internal_file_io_control_read_with_error_code( + internal_file, + DIOCGSECTORSIZE, + NULL, + 0, + (uint8_t *) &bytes_per_sector, + sizeof( u_int ), + &error_code, + error ); + + if( read_count == -1 ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_IO, + LIBCERROR_IO_ERROR_IOCTL_FAILED, + "%s: unable to query device for: DIOCGSECTORSIZE.", + function ); + +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + if( ( error != NULL ) + && ( *error != NULL ) ) + { + libcnotify_print_error_backtrace( + *error ); + } + } +#endif + libcerror_error_free( + error ); + } + else if( bytes_per_sector > (u_int) UINT32_MAX ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_ARGUMENTS, + LIBCERROR_ARGUMENT_ERROR_VALUE_OUT_OF_BOUNDS, + "%s: invalid bytes per sector value out of bounds.", + function ); + +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + if( ( error != NULL ) + && ( *error != NULL ) ) + { + libcnotify_print_error_backtrace( + *error ); + } + } +#endif + libcerror_error_free( + error ); + } +#elif defined( DKIOCGETBLOCKSIZE ) + read_count = libcfile_internal_file_io_control_read_with_error_code( + internal_file, + DKIOCGETBLOCKSIZE, + NULL, + 0, + (uint8_t *) &bytes_per_sector, + 4, + &error_code, + error ); + + if( read_count == -1 ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_IO, + LIBCERROR_IO_ERROR_IOCTL_FAILED, + "%s: unable to query device for: DKIOCGETBLOCKSIZE.", + function ); + +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + if( ( error != NULL ) + && ( *error != NULL ) ) + { + libcnotify_print_error_backtrace( + *error ); + } + } +#endif + libcerror_error_free( + error ); + } +#endif +#if defined( HAVE_DEBUG_OUTPUT ) + if( libcnotify_verbose != 0 ) + { + libcnotify_printf( + "%s: bytes per sector: %" PRIu32 "\n", + function, + bytes_per_sector ); + } +#endif + if( bytes_per_sector != 0 ) + { + if( libcfile_internal_file_set_block_size( + internal_file, + (size_t) bytes_per_sector, + error ) != 1 ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_SET_FAILED, + "%s: unable to set block size.", + function ); + + return( -1 ); + } + } + return( 1 ); +} + /* Sets the block size for the read and seek operations * A block size of 0 represents no block-based operations * The total size must be a multitude of block size @@ -4689,10 +4873,17 @@ { if( block_size > 0 ) { +#if defined( __FreeBSD__ ) || defined( __NetBSD__ ) || defined( __OpenBSD__ ) + if( posix_memalign( + (void **) &( internal_file->block_data ), + block_size, + block_size ) != 0 ) +#else internal_file->block_data = (uint8_t *) memory_allocate( - sizeof( uint8_t ) * block_size ); + block_size ); if( internal_file->block_data == NULL ) +#endif { libcerror_error_set( error, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcfile/libcfile_file.h new/libfsxfs-20260901/libcfile/libcfile_file.h --- old/libfsxfs-20260703/libcfile/libcfile_file.h 2026-07-02 07:16:50.000000000 +0200 +++ new/libfsxfs-20260901/libcfile/libcfile_file.h 2026-09-01 20:49:45.000000000 +0200 @@ -254,6 +254,10 @@ int access_behavior, libcerror_error_t **error ); +int libcfile_internal_file_determine_block_size( + libcfile_internal_file_t *internal_file, + libcerror_error_t **error ); + int libcfile_internal_file_set_block_size( libcfile_internal_file_t *internal_file, size_t block_size, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libclocale/libclocale_definitions.h new/libfsxfs-20260901/libclocale/libclocale_definitions.h --- old/libfsxfs-20260703/libclocale/libclocale_definitions.h 2026-07-02 07:16:52.000000000 +0200 +++ new/libfsxfs-20260901/libclocale/libclocale_definitions.h 2026-09-01 20:49:47.000000000 +0200 @@ -34,11 +34,11 @@ */ #else -#define LIBCLOCALE_VERSION 20260612 +#define LIBCLOCALE_VERSION 20260703 /* The libclocale version string */ -#define LIBCLOCALE_VERSION_STRING "20260612" +#define LIBCLOCALE_VERSION_STRING "20260703" /* The codepage feature flag definitions */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcnotify/libcnotify_definitions.h new/libfsxfs-20260901/libcnotify/libcnotify_definitions.h --- old/libfsxfs-20260703/libcnotify/libcnotify_definitions.h 2026-07-02 07:16:55.000000000 +0200 +++ new/libfsxfs-20260901/libcnotify/libcnotify_definitions.h 2026-09-01 20:49:49.000000000 +0200 @@ -35,11 +35,11 @@ */ #else -#define LIBCNOTIFY_VERSION 20260612 +#define LIBCNOTIFY_VERSION 20260703 /* The libcnotify version string */ -#define LIBCNOTIFY_VERSION_STRING "20260612" +#define LIBCNOTIFY_VERSION_STRING "20260703" /* The print data flags */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcpath/libcpath_definitions.h new/libfsxfs-20260901/libcpath/libcpath_definitions.h --- old/libfsxfs-20260703/libcpath/libcpath_definitions.h 2026-07-02 07:16:57.000000000 +0200 +++ new/libfsxfs-20260901/libcpath/libcpath_definitions.h 2026-09-01 20:49:52.000000000 +0200 @@ -35,11 +35,11 @@ */ #else -#define LIBCPATH_VERSION 20260621 +#define LIBCPATH_VERSION 20260703 /* The libcpath version string */ -#define LIBCPATH_VERSION_STRING "20260621" +#define LIBCPATH_VERSION_STRING "20260703" #if defined( WINAPI ) || defined( __MINGW32__ ) #define LIBCPATH_SEPARATOR '\\' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcsplit/libcsplit_definitions.h new/libfsxfs-20260901/libcsplit/libcsplit_definitions.h --- old/libfsxfs-20260703/libcsplit/libcsplit_definitions.h 2026-07-02 07:16:59.000000000 +0200 +++ new/libfsxfs-20260901/libcsplit/libcsplit_definitions.h 2026-09-01 20:49:54.000000000 +0200 @@ -35,11 +35,11 @@ */ #else -#define LIBCSPLIT_VERSION 20260612 +#define LIBCSPLIT_VERSION 20260703 /* The libcsplit version string */ -#define LIBCSPLIT_VERSION_STRING "20260612" +#define LIBCSPLIT_VERSION_STRING "20260703" #endif /* !defined( HAVE_LOCAL_LIBCSPLIT ) */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcthreads/libcthreads_definitions.h new/libfsxfs-20260901/libcthreads/libcthreads_definitions.h --- old/libfsxfs-20260703/libcthreads/libcthreads_definitions.h 2026-07-02 07:17:01.000000000 +0200 +++ new/libfsxfs-20260901/libcthreads/libcthreads_definitions.h 2026-09-01 20:49:57.000000000 +0200 @@ -35,11 +35,11 @@ */ #else -#define LIBCTHREADS_VERSION 20260615 +#define LIBCTHREADS_VERSION 20260703 /* The libcthreads version string */ -#define LIBCTHREADS_VERSION_STRING "20260615" +#define LIBCTHREADS_VERSION_STRING "20260703" /* The comparison function definitions */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libcthreads/libcthreads_repeating_thread.h new/libfsxfs-20260901/libcthreads/libcthreads_repeating_thread.h --- old/libfsxfs-20260703/libcthreads/libcthreads_repeating_thread.h 2026-07-02 07:17:01.000000000 +0200 +++ new/libfsxfs-20260901/libcthreads/libcthreads_repeating_thread.h 2026-09-01 20:49:57.000000000 +0200 @@ -87,11 +87,11 @@ /* The number of active tasks */ - uint8_t active_tasks; + int active_tasks; /* The total number of tasks */ - uint8_t total_tasks; + int total_tasks; }; LIBCTHREADS_EXTERN \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs/libfsxfs.rc new/libfsxfs-20260901/libfsxfs/libfsxfs.rc --- old/libfsxfs-20260703/libfsxfs/libfsxfs.rc 2026-07-02 07:17:28.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs/libfsxfs.rc 2026-09-01 20:50:23.000000000 +0200 @@ -22,12 +22,12 @@ BLOCK "040904E4" BEGIN VALUE "FileDescription", "Library to access the X File System (XFS) format\0" - VALUE "FileVersion", "20260703" "\0" + VALUE "FileVersion", "20260901" "\0" VALUE "InternalName", "libfsxfs.dll\0" VALUE "LegalCopyright", "(C) 2020-2026, Joachim Metz <[email protected]>\0" VALUE "OriginalFilename", "libfsxfs.dll\0" VALUE "ProductName", "libfsxfs\0" - VALUE "ProductVersion", "20260703" "\0" + VALUE "ProductVersion", "20260901" "\0" VALUE "Comments", "For more information visit https://github.com/libyal/libfsxfs/\0" END END diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs/libfsxfs_attributes.c new/libfsxfs-20260901/libfsxfs/libfsxfs_attributes.c --- old/libfsxfs-20260703/libfsxfs/libfsxfs_attributes.c 2026-07-01 16:27:46.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs/libfsxfs_attributes.c 2026-09-01 13:29:54.000000000 +0200 @@ -1019,6 +1019,10 @@ return( -1 ); } + if( inode->attributes_fork_offset == 0 ) + { + return( 1 ); + } if( ( inode->attributes_fork_type != LIBFSXFS_FORK_TYPE_INLINE_DATA ) && ( inode->attributes_fork_type != LIBFSXFS_FORK_TYPE_EXTENTS ) && ( inode->attributes_fork_type != LIBFSXFS_FORK_TYPE_BTREE ) ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs/libfsxfs_definitions.h new/libfsxfs-20260901/libfsxfs/libfsxfs_definitions.h --- old/libfsxfs-20260703/libfsxfs/libfsxfs_definitions.h 2026-07-02 07:17:28.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs/libfsxfs_definitions.h 2026-09-01 20:50:23.000000000 +0200 @@ -37,11 +37,11 @@ * for local use of libfsxfs */ #else -#define LIBFSXFS_VERSION 20260703 +#define LIBFSXFS_VERSION 20260901 /* The version string */ -#define LIBFSXFS_VERSION_STRING "20260703" +#define LIBFSXFS_VERSION_STRING "20260901" /* The file access * bit 1 set to 1 for read access diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs/libfsxfs_directory.c new/libfsxfs-20260901/libfsxfs/libfsxfs_directory.c --- old/libfsxfs-20260703/libfsxfs/libfsxfs_directory.c 2026-06-26 07:41:34.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs/libfsxfs_directory.c 2026-08-31 22:06:25.000000000 +0200 @@ -1197,7 +1197,7 @@ } if( libfsxfs_block_directory_initialize( &block_directory, - io_handle->block_size, + io_handle->directory_block_size, error ) != 1 ) { libcerror_error_set( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs/libfsxfs_directory_table_header.c new/libfsxfs-20260901/libfsxfs/libfsxfs_directory_table_header.c --- old/libfsxfs-20260703/libfsxfs/libfsxfs_directory_table_header.c 2026-06-26 07:41:34.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs/libfsxfs_directory_table_header.c 2026-08-28 11:43:41.000000000 +0200 @@ -30,8 +30,6 @@ #include "libfsxfs_libcerror.h" #include "libfsxfs_libcnotify.h" -#include "fsxfs_btree.h" - /* Creates a directory_table_header * Make sure the value directory_table_header is referencing, is set to NULL * Returns 1 if successful or -1 on error diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs/libfsxfs_extent_btree.c new/libfsxfs-20260901/libfsxfs/libfsxfs_extent_btree.c --- old/libfsxfs-20260703/libfsxfs/libfsxfs_extent_btree.c 2026-06-26 07:41:34.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs/libfsxfs_extent_btree.c 2026-08-29 19:06:54.000000000 +0200 @@ -552,7 +552,7 @@ libcerror_error_t **error ) { libfsxfs_btree_block_t *btree_block = NULL; - static char *function = "libfsxfs_extent_btree_get_exents_from_node"; + static char *function = "libfsxfs_extent_btree_get_extents_from_node"; off64_t btree_block_offset = 0; uint64_t relative_block_number = 0; int allocation_group_index = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs/libfsxfs_file_entry.c new/libfsxfs-20260901/libfsxfs/libfsxfs_file_entry.c --- old/libfsxfs-20260703/libfsxfs/libfsxfs_file_entry.c 2026-06-26 07:41:34.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs/libfsxfs_file_entry.c 2026-08-30 18:06:58.000000000 +0200 @@ -456,7 +456,7 @@ if( ( internal_file_entry->inode->file_mode & 0xf000 ) == LIBFSXFS_FILE_TYPE_SYMBOLIC_LINK ) { if( ( internal_file_entry->data_size == 0 ) - || ( internal_file_entry->data_size > (uint64_t) MEMORY_MAXIMUM_ALLOCATION_SIZE ) ) + || ( internal_file_entry->data_size > (uint64_t) 1024 ) ) { libcerror_error_set( error, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs/libfsxfs_inode_btree.c new/libfsxfs-20260901/libfsxfs/libfsxfs_inode_btree.c --- old/libfsxfs-20260703/libfsxfs/libfsxfs_inode_btree.c 2026-06-26 07:41:34.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs/libfsxfs_inode_btree.c 2026-08-29 17:17:34.000000000 +0200 @@ -183,7 +183,7 @@ libcerror_error_t **error ) { libfsxfs_inode_information_t *inode_information = NULL; - static char *function = "libfsxfs_file_system_read_inode_information"; + static char *function = "libfsxfs_inode_btree_read_inode_information"; int entry_index = 0; if( inode_btree == NULL ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs/libfsxfs_superblock.c new/libfsxfs-20260901/libfsxfs/libfsxfs_superblock.c --- old/libfsxfs-20260703/libfsxfs/libfsxfs_superblock.c 2026-07-01 16:02:28.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs/libfsxfs_superblock.c 2026-08-30 11:50:42.000000000 +0200 @@ -747,38 +747,32 @@ return( -1 ); } - if( ( (fsxfs_superblock_t *) data )->directory_block_size_log2 == 0 ) + if( ( (fsxfs_superblock_t *) data )->directory_block_size_log2 >= 32 ) { - superblock->directory_block_size = superblock->block_size; - } - else - { - if( ( (fsxfs_superblock_t *) data )->directory_block_size_log2 >= 32 ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_RUNTIME, - LIBCERROR_RUNTIME_ERROR_UNSUPPORTED_VALUE, - "%s: invalid directory block size log2 value out of bounds.", - function ); + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_UNSUPPORTED_VALUE, + "%s: invalid directory block size log2 value out of bounds.", + function ); - return( -1 ); - } - superblock->directory_block_size = (uint32_t) 1 << ( (fsxfs_superblock_t *) data )->directory_block_size_log2; + return( -1 ); + } + superblock->directory_block_size = (uint32_t) 1 << ( (fsxfs_superblock_t *) data )->directory_block_size_log2; - if( (size_t) superblock->directory_block_size > (size_t) ( UINT32_MAX / superblock->block_size ) ) - { - libcerror_error_set( - error, - LIBCERROR_ERROR_DOMAIN_RUNTIME, - LIBCERROR_RUNTIME_ERROR_UNSUPPORTED_VALUE, - "%s: invalid directory block size log2 value out of bounds.", - function ); + if( (size_t) superblock->directory_block_size > (size_t) ( UINT32_MAX / superblock->block_size ) ) + { + libcerror_error_set( + error, + LIBCERROR_ERROR_DOMAIN_RUNTIME, + LIBCERROR_RUNTIME_ERROR_UNSUPPORTED_VALUE, + "%s: invalid directory block size log2 value out of bounds.", + function ); - return( -1 ); - } - superblock->directory_block_size *= superblock->block_size; + return( -1 ); } + superblock->directory_block_size *= superblock->block_size; + if( ( superblock->allocation_group_size < 5 ) || ( superblock->allocation_group_size > (uint32_t) INT32_MAX ) ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/libfsxfs.spec new/libfsxfs-20260901/libfsxfs.spec --- old/libfsxfs-20260703/libfsxfs.spec 2026-07-02 07:17:28.000000000 +0200 +++ new/libfsxfs-20260901/libfsxfs.spec 2026-09-01 20:50:23.000000000 +0200 @@ -1,5 +1,5 @@ Name: libfsxfs -Version: 20260703 +Version: 20260901 Release: 1 Summary: Library to access the X File System (XFS) format Group: System Environment/Libraries @@ -95,6 +95,6 @@ %{_mandir}/man1/* %changelog -* Thu Jul 2 2026 Joachim Metz <[email protected]> 20260703-1 +* Tue Sep 1 2026 Joachim Metz <[email protected]> 20260901-1 - Auto-generated diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/m4/tests.m4 new/libfsxfs-20260901/m4/tests.m4 --- old/libfsxfs-20260703/m4/tests.m4 2026-07-02 07:08:41.000000000 +0200 +++ new/libfsxfs-20260901/m4/tests.m4 2026-08-27 16:51:02.000000000 +0200 @@ -1,6 +1,6 @@ dnl Functions for testing dnl -dnl Version: 20260702 +dnl Version: 20260703 dnl Function to check if pthread_rwlock_unlock can be hooked for testing AC_DEFUN([AX_TESTS_CHECK_CAN_HOOK_PTHREAD_RWLOCK_UNLOCK], @@ -252,7 +252,7 @@ AC_DEFUN([AX_TESTS_CHECK_LOCAL], [AC_CHECK_HEADERS([dlfcn.h]) - AC_CHECK_FUNCS([fmemopen getopt mkstemp setenv tzset unlink]) + AC_CHECK_FUNCS([getopt mkstemp setenv tmpfile tzset unlink]) AC_CHECK_LIB( dl, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/pyproject.toml new/libfsxfs-20260901/pyproject.toml --- old/libfsxfs-20260703/pyproject.toml 2026-07-02 07:17:28.000000000 +0200 +++ new/libfsxfs-20260901/pyproject.toml 2026-09-01 20:50:23.000000000 +0200 @@ -4,7 +4,7 @@ [project] name = "libfsxfs-python" -version = "20260703" +version = "20260901" description = "Python bindings for libfsxfs" maintainers = [ { name = "Joachim Metz", email = "[email protected]" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libfsxfs-20260703/tests/package.m4 new/libfsxfs-20260901/tests/package.m4 --- old/libfsxfs-20260703/tests/package.m4 2026-07-02 07:11:27.000000000 +0200 +++ new/libfsxfs-20260901/tests/package.m4 2026-09-01 13:27:09.000000000 +0200 @@ -1,5 +1,5 @@ m4_define([AT_PACKAGE_NAME], [libfsxfs]) m4_define([AT_PACKAGE_TARNAME], [libfsxfs]) -m4_define([AT_PACKAGE_VERSION], [20260703]) -m4_define([AT_PACKAGE_STRING], [libfsxfs 20260703]) +m4_define([AT_PACKAGE_VERSION], [20260901]) +m4_define([AT_PACKAGE_STRING], [libfsxfs 20260901]) m4_define([AT_PACKAGE_BUGREPORT], [https://github.com/libyal/libfsxfs/issues])
