diff options
Diffstat (limited to 'NEWS')
| -rw-r--r-- | NEWS | 173 |
1 files changed, 173 insertions, 0 deletions
@@ -1,3 +1,176 @@ +Version 2.8.1 +~~~~~~~~~~~~~ + +- Changes: + * bplist: Use length-based range checks for object data + * bplist: Limit the total number of parsed nodes to prevent memory + exhaustion from crafted reference expansion + * bytearray: Grow the buffer geometrically to avoid quadratic appends + (fixes a timeout when writing large plists) + * Harden allocation failure handling and size arithmetic across the + parsers, writers and containers + * Add tests for the binary plist parser behavior + +- Bugfixes: + * Fix use-after-free in plist_copy_node() when the stack is reallocated + * Fix double-free in node_from_xml() error paths + * Fix memory leak in xplist when adding a node to its parent fails + * Fix leaks and crashes on allocation failure in the XML, binary and + OpenStep parsers, plist_free_children(), plist_copy_node_shallow(), + the dict hashtable and plist_to_bin() + * Report PLIST_ERR_NO_MEM from the XML parser on allocation failure + * oplist: Fix error detection when parsing 'strings' data + * time64: Fix signed integer overflow for extreme years in gmtime64_r() + * Fix plist_get_date_val() rounding and sign handling so that it + round-trips with plist_set_date_val(); handle out-of-range and NaN + values without undefined behavior + * bplist: Guard the uint64_mul_overflow fallback against division by zero + * Fix leak in integer_set test + * [github-actions] Add more msys flavors and an arm64 Windows build + +Version 2.8.0 +~~~~~~~~~~~~~ + +- Changes: + * Convert plist_array_set_item, plist_array_append_item, plist_array_insert_item, + plist_array_remove_item, plist_array_item_remove, plist_dict_set_item, + plist_dict_remove_item, and plist_dict_merge from void to plist_err_t return + type so that memory allocation and other errors can be reported + * Make #PLIST_ARRAY and #PLIST_DICT iterators opaque; add plist_array_free_iter + and plist_dict_free_iter to release them + * Add JSON coercion support for non-JSON plist types + * Add OpenStep coercion support for non-OpenStep plist types + * Add circular reference detection to all format writers + * Prevent deep nesting of plist structures in all input/output formats + * plistutil: Use getopt for solid option parsing + * plistutil: Add a --nodepath option to allow selecting a specific node + * plistutil: Read STDIN in chunks instead of one byte at a time + * plistutil: preserve binary data on Windows standard streams + * Add NULL checks and error handling across the codebase (node_attach/insert + failures, realloc failures in byte_array_grow/ptr_array_insert, etc.) + * Make plist copy and free implementations iterative to avoid stack overflow + on deeply nested structures + * docs: Add OpenStep to man page + +- Bugfixes: + * Fix heap overflow caused by incorrect PLIST_STRING length during copy + * Fix UTF-8 to UTF-16 decoding and enforce strict validation in bplist + * Fix inverted strcmp in string to boolean conversion + * Fix incorrect size storage in plist_copy() for PLIST_STRING nodes + * Fix is_ascii_string by using a sufficiently large data type + * Fix bplist offset_table range check and add overflow check to node offset + pointer arithmetic + * Reject insertion of plist nodes that already have a parent + * xplist: Enforce single root value inside <plist> + * xplist: Convert nested {CF$UID:<int>} dicts to PLIST_UID safely + * xplist: Harden entity unescaping against malformed input and improve + robustness of XML text parsing and value conversion + * Fix plist_is_binary() not checking for NULL input + * Fix a few memory leaks in JSON parsing and libcnary node_copy_deep() + * Fix Cython crashes + * Fix fread() unused return values by actually handling errors + * Fix Integer constructor to copy plist node (C++ bindings) + * Various smaller compiler warning and portability fixes (MSVC ssize_t, + format specifiers, WIN32 time_s support) + +Version 2.7.0 +~~~~~~~~~~~~~ + +- Changes: + * Add plist_new_unix_date, plist_get_unix_date_val, plist_set_unix_date_val functions + that work with int64_t values representing a UNIX timestamp instead of + using the 'MAC epoch'. + These new functions should be used instead of plist_new_date, + plist_get_date_val, and plist_set_date_val, which are now marked deprecated + and might be removed in a future version of libplist. + * Allow building the library without tool(s) + * Switch to more generic global initializer method + * json: Allow e+/E+ in exponent as per RFC 8259 + * C++: Add more convenience functions to the interface + * C++: Add more type variants to different constructors and operators +- Bugfixes: + * Fix segmentation fault when calling plist_sort() on an empty dictionary + * Fix compilation on MSVC + * C++: Fix bug in internal helper function of Array class + * C++: Fix String::GetValue memory leaking and support assignment of const char* + +Version 2.6.0 +~~~~~~~~~~~~~ + +- Changes: + * Revert back API change around PLIST_DATA to use char* again + +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 ~~~~~~~~~~~~~ |
