| Version 2.5.0 |
| ~~~~~~~~~~~~~ |
| |
| - Changes: |
| * Change API around PLIST_DATA to use uint8_t* instead of char* |
| * Add PLIST_DICT helper functions for different operations |
| * Require Cython 3.0 for python bindings |
| |
| Version 2.4.0 |
| ~~~~~~~~~~~~~ |
| |
| - Changes: |
| * Add a PLIST_OPT_NONE value to plist_write_options_t |
| * autoconf: Allow disabling build of test suite |
| * Update doxygen config and document undocumented macros |
| * Add an explicit PLIST_FORMAT_NONE value |
| * Add a libplist_version() function to the interface |
| * docs: Use README.md to generate mainpage with doxygen |
| - Bugfixes: |
| * Several compiler-related fixes and code improvements |
| * Plug memory leak in plist_write_to_stream() |
| * Prevent adding NULL items to array/dictionary nodes |
| * Fix parallel running of test suite |
| * Fix cython bindings |
| * Fix OOB read in plist_from_memory() |
| |
| Version 2.3.0 |
| ~~~~~~~~~~~~~ |
| |
| - Changes: |
| * Rename PLIST_UINT to PLIST_INT and add plist_new_int() and plist_get_int_val() |
| * Add support for JSON format |
| * Add support for OpenStep format |
| * Introduce error codes and format constants |
| * Add return value to import/export functions to allow returning error codes |
| * Add new plist_sort function |
| * Add several human-readable output-only formats |
| * Add new plist_write_to_string/_stream/_file functions |
| * Add new plist_print function |
| * Add new plist_read_from_file function |
| * Add new plist_mem_free() function |
| * Add a few C++ methods |
| * Add C++ interface test |
| * Add PLIST_NULL type |
| * Some code housekeeping (mostly clang-tidy) |
| - Breaking: |
| * plist_from_memory() gets additional parameter |
| - Bugfixes: |
| * Fix multiple bugs in all of the parsers |
| * Fix handling of PLIST_UID nodes |
| |
| Version 2.2.0 |
| ~~~~~~~~~~~~~ |
| |
| - Changes: |
| * bplist: Improve recursion check performance by at least 30% for large files |
| * test: Fix test suite on Windows |
| * cython: Fix handling of Date nodes (MACH_EPOCH) |
| * Add new plist_*_val_compare(), plist_*_val_contains() helper functions |
| * Fix/suppress several compiler warnings |
| * plistutil: Added ability for files to be read from stdin |
| * plistutil: Added ability to specify output format |
| * Fix: Return NULL from plist_copy() if passed a NULL pointer instead of asserting |
| * Add GitHub Actions integration for automatic build tests |
| * plistutil: Add manual page and usage output |
| * Fix removal of docs directory on `make clean` |
| * Improve README.md with project description, installation, contributing and |
| usage sections |
| * Rename library and all related files by adding an API version resulting |
| in "libplist-2.0" and "libplist++-2.0" |
| |
| Version 2.1.0 |
| ~~~~~~~~~~~~~ |
| |
| - Changes: |
| * Add new plist_get_data_ptr() and plist_get_string_ptr() for direct access to underlying buffer |
| * Increase precision when converting PLIST_REAL nodes to XML |
| * Fix several issues in libcnary (UaF, segfault, memory leak) |
| * Fix copying of hash table entries when cloning array/dict nodes |
| * cython: Implement load()/loads() and dump()/dumps() to match up with plistlib (Python 3.4) |
| * Add new plist_dict_item_get_key() for retrieving key node of a dict item |
| * Add new plist_array_item_remove() to allow removing an array's child node without relying on the index |
| * Make plist_array_get_item_index() return UINT_MAX instead of 0 when node can't be found |
| * Add index lookup table for large PLIST_ARRAY nodes |
| * Add iterator for array nodes: plist_array_new_iter(), plist_array_next_item() |
| * Improve performance of plist_dict_next_item() drastically |
| * Improve performance and memory usage when writing XML plists |
| * Improve performance and memory usage when writing binary plists |
| * Allow building with sanitizers (without fuzzers) |
| * Prevent store to misaligned address when writing real/date nodes |
| * Work around misaligned reads in binary plist parser |
| * Integrate fuzzing targets (libFuzzer) into project |
| * Add sanitizers (ASAN, UBSAN) when building fuzzers (--with-fuzzers) |
| |
| Version 2.0.0 |
| ~~~~~~~~~~~~~ |
| |
| - Changes: |
| * New light-weight custom XML parser |
| * Remove libxml2 dependency |
| * Refactor binary plist parsing |
| * Improved malformed XML and binary plist detection and error handling |
| * Add parser debug/error output (when compiled with --enable-debug), controlled via environment variables |
| * Fix unicode character handling |
| * Add PLIST_IS_* helper macros for the different node types |
| * Extend date/time range and date conversion issues |
| * Add plist_is_binary() and plist_from_memory() functions to the interface |
| * Plug several memory leaks |
| * Speed improvements for handling large plist files |
| |
| - Includes security fixes for: |
| * CVE-2017-6440 |
| * CVE-2017-6439 |
| * CVE-2017-6438 |
| * CVE-2017-6437 |
| * CVE-2017-6436 |
| * CVE-2017-6435 |
| * CVE-2017-5836 |
| * CVE-2017-5835 |
| * CVE-2017-5834 |
| * CVE-2017-5545 |
| * CVE-2017-5209 |
| ... and several others that didn't receive any CVE (yet). |
| |
| Version 1.12 |
| ~~~~~~~~~~~~ |
| |
| - Changes: |
| * Fix plist_from_bin() changing value nodes to key nodes in dictionaries |
| * Avoid exporting non-public symbols |
| * Prevent crash in plist_from_bin() when parsing unusual binary plists |
| * Fix crash in String|Key::GetValue() and actually make C++ interface work |
| * Fix memory leaks in new_xml_plist() and parse_real_node() |
| * Fix header guards to conform to C++ standard |
| * Update Cython based Python bindings and remove plist_new_key() |
| * Fix key nodes not being output correctly if they contained XML entities |
| * Fix handling and storage of signed vs. unsigned integer values |
| * Fix date handling to respect the "Mac Epoch" instead of "Unix Epoch" |
| * Remove plist_set_type() as it should not be used |
| * Fix deprecated macros to work with older LLVM/Clang |
| * Fix various shadowed declarations |
| * Add documentation to explicitly describe memory buffer ownership |
| * Fix memory leak in plist_from_bin() |
| * Add various test cases based on fixes |
| * Fix wrong timezone related date/time conversion of date nodes |
| * Fix endian detection on MIPS architecture |
| * Fix parallel build for autotools |
| |
| Version 1.11 |
| ~~~~~~~~~~~~ |
| |
| - Changes: |
| * Deprecated plist_dict_insert_item() in favor of plist_dict_set_item() |
| * Updated cython bindings for Python 3.x |
| * Removed swig python bindings |
| * Changed build system to autotools |
| * Added new plist_dict_merge() function |
| * WIN32 (MinGW) + OSX compilation fixes |
| * Made base64 decoding thread safe |
| |
| Version 1.10 |
| ~~~~~~~~~~~~ |
| |
| - Changes: |
| * Renamed plutil to plistutil to not mask Apple's plutil |
| * Fixed cython bindings (broken in 1.9) |
| * Added support for PLIST_UID node types to C++, cython, and swig bindings |
| |
| - Important Note: |
| * Support for swig python bindings will be dropped with future releases. |
| The bindings will be kept in the source tree for now, but we suggest |
| to update your python code to use the cython bindings instead. |
| |
| Version 1.9 |
| ~~~~~~~~~~~ |
| |
| - Changes: |
| * Add support for handling UID node types |
| * Fix crash when converting plists containing comments |
| * Fix Bug in plist_data_compare() |
| * Fix DST handling for PLIST_DATE |
| * Fix plist_dict_set_item() and plist_array_set_item() |
| * Fix cython String plist handling |
| * Fix invalid memory access in copy_plist_data() |
| * Fix several compiler warnings |
| |
| Version 1.8 |
| ~~~~~~~~~~~ |
| |
| - Changes: |
| * Add cython bindings |
| * Fix error in swig bindings |
| * Fix memory corruption in libcnary |
| |
| Version 1.7 |
| ~~~~~~~~~~~ |
| |
| - Changes: |
| * Fix building on Big Endian systems |
| |
| Version 1.6 |
| ~~~~~~~~~~~ |
| |
| - Changes: |
| * Updated libcnary sources, adding license and copyright info |
| |
| Version 1.5 |
| ~~~~~~~~~~~ |
| |
| - Changes: |
| * Removed glib dependency, libplist now uses libcnary |
| (http://github.com/Chronic-Dev/libcnary) |
| * Fix building of python bindings with GCC 4.6 |
| |
| Version 1.4 |
| ~~~~~~~~~~~ |
| |
| - New maintainer and source location |
| - Changes: |
| * Update AUTHORS from git history |
| * Fix Unicode writing in binary plists |
| * Update plist doctype |
| * Fix Dictionary copy constructor |
| * Fix Mac OS X library install path detection |
| * Plug memory leak when writing Unicode data |
| |
| Version 1.3 |
| ~~~~~~~~~~~ |
| |
| - Changes: |
| * Endianness, alignment and type-punning fixes |
| * Fix armel floating point endianess |
| * Allow compiling with mingw on Windows |
| * Minor bugfixes |
| |
| Version 1.2 |
| ~~~~~~~~~~~ |
| |
| - Changes: |
| * Fix xml entity conversion |
| * Silence build warnings |
| |
| Version 1.1 |
| ~~~~~~~~~~~ |
| |
| - Changes: |
| * Fix use of integer nodes within Python Bindings |
| |
| Version 1.0 |
| ~~~~~~~~~~~ |
| |
| - Changes: |
| * Bugfixes |
| * Remove deprecated API |
| |
| Version 0.16 |
| ~~~~~~~~~~~~ |
| |
| - Changes: |
| * Build fixes |
| * Fix issues with SWIG |
| |
| Version 0.15 |
| ~~~~~~~~~~~~ |
| |
| - Changes: |
| * Build fixes |
| |
| Version 0.14 |
| ~~~~~~~~~~~~ |
| |
| - Changes: |
| * Add C++ binding |
| * Refactor API |
| * Bugfixes |
| |
| Version 0.13 |
| ~~~~~~~~~~~~ |
| |
| - Changes: |
| * Add plist_copy for deep node copies |
| * Add node setter functions |
| * Unlink nodes from parent if free'd |
| * Update Python bindings |
| |
| Version 0.12 |
| ~~~~~~~~~~~~ |
| |
| - Changes: |
| * Merge ascii and unicode handling in PLIST_STRING using UTF-8 |
| * Remove unicode related declaration in API (breaks API&ABI) |
| * Fix bad variable type for date elements |
| * Silence compiler warnings |
| * Plugged few memory leaks |
| |
| Version 0.11 |
| ~~~~~~~~~~~~ |
| |
| - Changes: |
| * Fix Python binding segfaults |
| * Python API additions |
| * Better binary buffer handling in Python bindings |
| |