Hello community, here is the log from the commit of package physfs for openSUSE:Factory checked in at 2019-01-08 12:24:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/physfs (Old) and /work/SRC/openSUSE:Factory/.physfs.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "physfs" Tue Jan 8 12:24:09 2019 rev:27 rq:658962 version:3.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/physfs/physfs.changes 2017-06-22 10:40:43.278845343 +0200 +++ /work/SRC/openSUSE:Factory/.physfs.new.28833/physfs.changes 2019-01-08 12:25:54.972440451 +0100 @@ -1,0 +2,116 @@ +Tue Dec 11 15:12:57 UTC 2018 - [email protected] + +- Add physfs-empty_dir_fix.patch (hg a29fef4a20fd, fixes creation + of empty files when a directory doesn't exist) +- Removed physfs-gcc7.patch (fixed in upstream) + +------------------------------------------------------------------- +Mon Dec 10 17:24:33 UTC 2018 - [email protected] + +- Notable changes in 3.0.1: + * Trying to use the new mount functions (PHYSFS_mountIo, + PHYSFS_mountMemory, PHYSFS_mountHandle) with a NULL filename + would cause several problems. This now reports an error without + mounting. Docs have been corrected to reflect this reality. + * Trying to mounting an archive inside a .zip file with + PHYSFS_mountHandle() would crash with a NULL pointer + dereference. Fixed. + * Trying to access a file in the search path named "." or + ".." no longer succeeds. Previously, this bug meant you could + enumerate (but not access) files in the parent of a mounted + native directory. Trying to open "." or ".." might have crashed + or hung PhysicsFS. This only applies to the literal string "." + or ".."; if there was a '/' char in the path, PhysicsFS would + correctly reject a path with an element named as such. + * Trying to mount a symlink to a directory would + (incorrectly) fail on Unix and Apple platforms instead of + mounting the directory the symlink points to. Fixed. + * Fixed several crashes/hangs that a maliciously-crafted .iso + file could trigger. +- Notable changes in 3.0.0: + * PhysicsFS now is super-easy to build. You can usually just + drop all the C files into your project and compile it with + everything else without any magic configuration step. The CMake + file is still there and useful for packaging, etc, but it's + 100% optional. + * ZIP files can now use the newer zip64 format. + * ZIP files may be password-protected. As the PkWare specs + specify, each file in the .zip may have a different password, + so you call PHYSFS_openRead(a, "file_that_i_want.txt$PASSWORD") + to make it work. Note that this is a wildly insecure way to + protect your app's data, both in how you'd have to manage + passwords and that "traditional" PkWare crypto is not really + hardened anyhow. But if you have a basic password-protected + archive, PhysicsFS can get into it now! + * 7zip support has been rewritten and improved. + * ISO9660 archives are now supported. + * VDF (Gothic/Gothic2) archives are now supported. + * SLB (Independence War) archives are now supported. + * Everything behind the scenes now uses an abstract i/o + interface (PHYSFS_Io) instead of talking directly to files, and + this interface is available to applications. This allows you to + mount anything as an archive that you can wrap in a PHYSFS_Io, + through the new PHYSFS_mountIo() function. The obvious and most + useful implementations are already implemented for you behind + the scenes on top of PHYSFS_Io: PHYSFS_mountMemory() to mount + an archive that's in a block of RAM, and PHYSFS_mountHandle() + to mount from a PHYSFS_File*...that is to say: you now have an + interface to do archives inside archives. + * The abstract interface that PhysicsFS uses to talk to + archives (PHYSFS_Archiver) is now public, so apps can implement + their own archivers and register them into the system. If you + have a custom archive format for your app, you can plug it into + PhysicsFS at runtime without modifying PhysicsFS itself. + * There's now a PHYSFS_getPrefDir() to figure out where it is + safe to write files on a given platform. This is usually a + per-user, per-application space, and should be used instead of + PHYSFS_getUserDir(). It might report something under + ~/Library/Application Support on a Mac, somewhere under AppData + for Windows, or ~/.local/share on Linux, etc. + * There's now a PHYSFS_unmount() to match 2.0.0's + PHYSFS_mount(). + * There's now a PHYSFS_utf8FromUtf16(), so stop using + PHYSFS_utf8FromUcs2(). :) + * There's now PHYSFS_utf8stricmp() for case-insensitive UTF-8 + string comparison, in case you need to compare filenames. + * Enumerating files can now report errors, instead of quietly + dropping files when there were problems. Enumeration callbacks + can now return results too ("keep going", "stop enumerating, no + error I just got what I needed", "something went wrong, stop + and return an error to the app"). + * There is now a PHYSFS_stat() call that returns metadata on + a specific file as a whole instead of using + PHYSFS_isDirectory(), PHYSFS_getLastModTime(), etc + separately). + * There's now a PHYSFS_readBytes() function that operates + more like Unix read()...the older PHYSFS_read() operates more + like ANSI C's fread(), but had undefined behavior if it reads + half an object. There is also an equivalent + PHYSFS_writeBytes(). + * Errors are now reported by numeric codes your app can + process (there's a function to turn them into human readable + strings). Apps can set the per-thread error code now, too, + which is useful if you're writing an PHYSFS_Archiver or + PHYSFS_Io. + * The OS/2 port has Unicode support now. + * The Windows port now uses UTF-16 for Unicode instead of + UCS-2, and dropped the ANSI fallbacks (so among other hurdles, + you'll need to bring your own UNICOWS.DLL if you want Win95 + support still). + * Lots of improvements, redesigns, bug fixes, corner cases, + and optimizations. + * There's now a buildbot that makes sure this builds across + two dozen different targets on every commit: + https://physfs-buildbot.icculus.org/waterfall + * New platforms: iOS, Android, Emscripten, WinRT (UWP, + Windows Phone, Windows Store), Win64, QNX, Solaris, Hurd, + Debian/kFreeBSD, ArcaOS, probably others. + * Dropped platforms: BeOS (Haiku is still supported), Windows + CE (Windows Phone is supported), Windows 95/98/ME (WinXP and + later are supported) MacOS Classic (macOS and iOS are + supported). Even these might work with minor patches if there's + an urgent demand. + * Probably many other things. This work encompasses many + years of effort and quite a bit of internal redesign. + +------------------------------------------------------------------- Old: ---- physfs-2.0.3.tar.bz2 physfs-gcc7.patch New: ---- physfs-3.0.1.tar.bz2 physfs-empty_dir_fix.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ physfs.spec ++++++ --- /var/tmp/diff_new_pack.dgE1xt/_old 2019-01-08 12:25:55.468439907 +0100 +++ /var/tmp/diff_new_pack.dgE1xt/_new 2019-01-08 12:25:55.472439903 +0100 @@ -1,7 +1,7 @@ # # spec file for package physfs # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -36,14 +36,14 @@ your program is running, etc."\ Name: physfs -Version: 2.0.3 +Version: 3.0.1 Release: 0 Summary: PhysicsFS file abstraction layer for games -License: (LGPL-2.1+ or CPL-1.0) and Zlib +License: (LGPL-2.1-or-later OR CPL-1.0) AND Zlib Group: System/Libraries Url: http://www.icculus.org/physfs/ Source: http://icculus.org/physfs/downloads/%{name}-%{version}.tar.bz2 -Patch0: physfs-gcc7.patch +Patch0: physfs-empty_dir_fix.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: pkgconfig @@ -111,7 +111,7 @@ %files -n lib%{name}%{so_nr} %defattr(0644,root,root,0755) -%doc CREDITS.txt INSTALL.txt LICENSE.txt TODO.txt +%doc docs/CREDITS.txt docs/INSTALL.txt LICENSE.txt docs/TODO.txt %{_libdir}/libphysfs.so.%{so_nr} %{_libdir}/libphysfs.so.%{version} ++++++ physfs-2.0.3.tar.bz2 -> physfs-3.0.1.tar.bz2 ++++++ ++++ 127049 lines of diff (skipped) ++++++ physfs-empty_dir_fix.patch ++++++ diff -up physfs-3.0.1/src/physfs.c.orig physfs-3.0.1/src/physfs.c --- physfs-3.0.1/src/physfs.c.orig 2018-10-05 14:58:25.549372371 -0400 +++ physfs-3.0.1/src/physfs.c 2018-10-05 14:59:30.720938234 -0400 @@ -879,13 +879,20 @@ static DirHandle *openDirectory(PHYSFS_I if (io == NULL) { + /* file doesn't exist, etc? Just fail out. */ + PHYSFS_Stat statbuf; + BAIL_IF_ERRPASS(!__PHYSFS_platformStat(d, &statbuf, 1), NULL); + /* DIR gets first shot (unlike the rest, it doesn't deal with files). */ - retval = tryOpenDir(io, &__PHYSFS_Archiver_DIR, d, forWriting, &claimed); - if (retval || claimed) - return retval; + if (statbuf.filetype == PHYSFS_FILETYPE_DIRECTORY) + { + retval = tryOpenDir(io, &__PHYSFS_Archiver_DIR, d, forWriting, &claimed); + if (retval || claimed) + return retval; + } /* if */ io = __PHYSFS_createNativeIo(d, forWriting ? 'w' : 'r'); - BAIL_IF_ERRPASS(!io, 0); + BAIL_IF_ERRPASS(!io, NULL); created_io = 1; } /* if */
