This is a minor release that exposes a few useful utility functions to librsync.h previously only used by rdiff. It also introduces proper exporting of only public symbols in the librsync.h header. The most important fix is for a memory leak when freeing signatures. Upgrading from v2.0.2 is highly recommended for people using librsync and experiencing memory leak problems, but otherwise not urgent.
Bump minor version from 2.0.3 to 2.1.0 to reflect additions to librsync.h.
Fix exporting of private symbols from librsync library. Add export of useful large file functions
rs_file_size()to librsync.h. Add export of
rs_signature_log_stats()to log signature hashtable hit/miss stats. Improve rdiff error output. (dbaarda, #130)
Updated release process to include stable tarballs. (dbaarda,#146)
Remove redundant and broken
--paranoiaargument from rdiff. (dbaarda, #155)
Fix memory leak of
rs_signature_t->block_sigswhen freeing signatures. (telles-simbiose, #147)
Document delta file format. (zmj, #46)
Fix up doxygen comments. (dbaarda, #151)
- The debian package configs are still very out of date.
This is a minor point release that includes mainly code cleanups and compatibility fixes for different platforms. Upgrading from v2.0.1 is recommended but not urgent for people who don't require any of these fixes.
Fix Unaligned memory access for rs_block_sig_init() (dbaarda, #135).
Fix hashtable_test.c name collision for key_t in sys/types.h on some platforms (dbaarda, #134)
Format code with consistent style, adding
make tidyctargets for reformating code and comments. (dbaarda, #125)
Removed perl as a build dependency. Note it is still required for some tests. (dbaarda, #75)
Update RPM spec file for v2.0.2 and fix cmake man page install. (deajan, #47)
- The debian package configs are still very out of date.
Although this is only a minor point release it is long overdue and includes a large number of performance improvements and bug fixes. It should be significantly faster than any earlier version, particularly for large files. It should also be more robust and reliable. People are strongly encouraged to upgrade.
Extensively reworked Doxygen documentation, now available at
http://librsync.sourcefrog.net/ (Martin Pool)
Removed some declarations from librsync.h that were unimplemented or no
longer ever useful:
declaration of unimplemented
rs_mdfour_file(). (Martin Pool)
snprintfcode: no longer acutally linked after changing to
CMake, and since it's part of C99 it should be widely available.
Document that Ninja (http://ninja-build.org/) is supported under CMake.
It's a bit faster and nicer than Make. (Martin Pool)
ninja checketc) will now build and run the tests.
Previously due to a CMake limitation,
make testwould only run existing
tests and could fail if they weren't built.
(Martin Pool, #49)
Added cmake options to exclude rdiff target and compression from build.
See install documentation for details. Thanks to Michele Bertasi.
poptis only needed when
rdiffis being built. (gulikoza)
Improved large file support for platforms using different variants
_fileno). (dbaarda, charlievieth,
rdiff -soption now shows bytes read/written and speed. (gulikoza).
For delta operations it also shows hashtable match statistics. (dbaarda)
Running rdiff should not overwrite existing files (signatures, deltas and
new patched files) by default. If the destination file exists, rdiff will
now exit with an error. Add new option -f (--force) to overwrite existing
Improve signature memory allocation (doubling size instead of calling
realloc for every sig block) and added support for preallocation. See
streaming.md job->estimated_signature_count for usage when using the
rdiffuses this by default if possible. (gulikoza, dbaarda)
Significantly tidied signature handling code and testing, resulting in more
consistent error handling behaviour, and making it easier to plug in
alternative weak and strong sum implementations. Also fixed "slack delta"
support for delta calculation with no signature. (dbaarda)
inttypes.hfrom C99 is now required. Removed redundant
librsync-config.h header file. (dbaarda)
Lots of small fixes for windows platforms and building with MSVC.
(lasalvavida, mbrt, dbaarda)
New open addressing hashtable implementation that significantly speeds up
delta operations, particularly for large files. Also fixed degenerate
behaviour with large number of duplicate blocks like runs of zeros
in sparse files. (dbaarda)
Optional support with cmake option for using libb2 blake2 implementation.
Also updated included reference blake2 implementation with bug fixes
Improved default values for input and output buffer sizes. The defaults are
now --input-size=0 and --output-size=0, which will choose recommended
default sizes based on the --block-size and the operation being performed.
Fixed hanging for truncated input files. It will now correctly report an
error indicating an unexpected EOF was encountered. (dbaarda,
Fixed #55 remove excessive rs_fatal() calls, replacing checks for
programming errors with assert statements. Now rs_fatal() will only
be called for rare unrecoverable fatal errors like malloc failures or
impossibly large inputs. (dbaarda,
- The rpm and debian package configs are very out of date.
Note: despite the major version bump, this release has few changes and should be binary and API compatible with the previous version.
- Bump librsync version number to 2.0, to match the library
(Martin Pool, #48)
librsync 1.0.1 (2015-11-21)
Better performance on large files. (VictorDenisov)
Add comment on usage of
rs_build_hash_table(), and assert correct use.
Callers must call
rs_build_hash_table()after loading the signature,
and before calling
Thanks to Paul Harris email@example.com
Switch from autoconf to CMake.
Thanks to Adam Schubert.
Changes in librsync 1.0.0 (2015-01-23)
SECURITY: CVE-2014-8242: librsync previously used a truncated MD4
"strong" check sum to match blocks. However, MD4 is not cryptographically
strong. It's possible that an attacker who can control the contents of one
part of a file could use it to control other regions of the file, if it's
transferred using librsync/rdiff. For example this might occur in a
database, mailbox, or VM image containing some attacker-controlled data.
To mitigate this issue, signatures will by default be computed with a
256-bit BLAKE2 hash. Old versions of librsync will complain about a
bad magic number when given these signature files.
Backward compatibility can be obtained using the new
rdiff sig --hash=md4
option or through specifying the "signature magic" in the API, but
this should not be used when either the old or new file contain
Deltas generated from those signatures will also use BLAKE2 during
generation, but produce output that can be read by old versions.
Thanks to Michael Samuel <miknet.net> for reporting this and offering an
Various build fixes, thanks Timothy Gu.
Improved rdiff man page from Debian.
Improved librsync.spec file for building RPMs.
Fixed bug #1110812 'internal error: job made no progress'; on large
Moved hosting to https://github.com/librsync/librsync/
Travis-CI.org integration test at https://travis-ci.org/librsync/librsync/
Remove bundled copy of popt; it must be installed separately.
You can set
autogen.sh, for example on
OS X Homebrew where it is called