Blame ChangeLog

Packit Service def718
Packit Service def718
0.13.1 (up to commit 0f814e5, 2018/03/04)
Packit Service def718
=========================================
Packit Service def718
Packit Service def718
* Bump the major version of the .so library generated up to 4.0 to avoid 
Packit Service def718
  conflicts because some downstream packagers of json-c had already done
Packit Service def718
  their own bump to ".so.3" for a much older 0.12 release.
Packit Service def718
* Add const size_t json_c_object_sizeof()
Packit Service def718
* Avoid invalid free (and thus a segfault) when ref_count gets < 0
Packit Service def718
* PR#394: fix handling of custom double formats that include a ".0"
Packit Service def718
* Avoid uninitialized variable warnings in json_object_object_foreach
Packit Service def718
* Issue #396: fix build for certain uClibc based systems.
Packit Service def718
* Add a top level fuzz directory for fuzzers run by OSS-Fuzz
Packit Service def718
Packit Service def718
0.13 (up to commit 5dae561, 2017/11/29)
Packit Service def718
=================================
Packit Service def718
Packit Service def718
This release, being three and a half years after the 0.12 branch (f84d9c),
Packit Service def718
   has quite a number of changes included.  The following is a sampling of
Packit Service def718
   the most significant ones.
Packit Service def718
Packit Service def718
Since the 0.12 release, 250 issues and pull requests have been closed.
Packit Service def718
See issues_closed_for_0.13.md for a complete list.
Packit Service def718
Packit Service def718
Packit Service def718
Deprecated and removed features:
Packit Service def718
--------------------------------
Packit Service def718
* All internal use of bits.h has been eliminated.  The file will be removed.
Packit Service def718
	Do not use: hexdigit(), error_ptr(), error_descrition() and it_error() 
Packit Service def718
* lh_abort() is deprecated.  It will be removed.
Packit Service def718
Packit Service def718
Behavior changes:
Packit Service def718
-----------------
Packit Service def718
* Tighten the number parsing algorithm to raise errors instead of truncating
Packit Service def718
     the results.  For example 12.3.4 or 2015-01-15, which now return null.
Packit Service def718
	 See commit 99d8fc
Packit Service def718
Packit Service def718
* Use size_t for array length and size.  Platforms where sizeof(size_t) != sizeof(int) may not be backwards compatible
Packit Service def718
	See commits 45c56b, 92e9a5 and others.
Packit Service def718
Packit Service def718
* Check for failue when allocating memory, returning NULL and errno=ENOMEM.
Packit Service def718
	 See commit 2149a04.
Packit Service def718
Packit Service def718
* Change json_object_object_add() return type from void to int, and will return -1 on failures, instead of exiting. (Note: this is not an ABI change)
Packit Service def718
Packit Service def718
New features:
Packit Service def718
-------------
Packit Service def718
* We're aiming to follow RFC 7159 now.
Packit Service def718
Packit Service def718
* Add a couple of additional option to json_object_to_json_string_ext:
Packit Service def718
	JSON_C_TO_STRING_PRETTY_TAB
Packit Service def718
	JSON_C_TO_STRING_NOSLASHESCAPE
Packit Service def718
Packit Service def718
* Add a json_object_object_add_ex() function to allow for performance
Packit Service def718
	improvements when certain constraints are known to be true.
Packit Service def718
Packit Service def718
* Make serialization format of doubles configurable, in two different ways:
Packit Service def718
	Call json_object_set_serializer with json_object_double_to_json_string and a custom
Packit Service def718
	 format on each double object, or
Packit Service def718
	Call json_c_set_serialization_double_format() to set a global or thread-wide format.
Packit Service def718
Packit Service def718
* Add utility function for comparing json_objects - json_object_equal()
Packit Service def718
Packit Service def718
* Add a way to copy entire object trees: json_object_deep_copy()
Packit Service def718
* Add json_object_set_<type> function to modify the value of existing json_object's
Packit Service def718
 without the need to recreate them.  Also add a json_object_int_inc function to
Packit Service def718
 adjust an int's value.
Packit Service def718
* Add support for JSON pointer, RFC 6901.  See json_pointer.h
Packit Service def718
* Add a json_util_get_last_err() function to retrieve the string describing the
Packit Service def718
 cause of errors, instead of printing to stderr.
Packit Service def718
* Add perllike hash function for strings, and json_global_set_string_hash() 8f8d03d
Packit Service def718
* Add a json_c_visit() function to provide a way to iterate over a tree of json-c objects.
Packit Service def718
Packit Service def718
Notable bug fixes and other improvements:
Packit Service def718
-----------------------------------------
Packit Service def718
* Make reference increment and decrement atomic to allow passing json objects between threads.
Packit Service def718
* Fix json_object_object_foreach to avoid uninitialized variable warnings.
Packit Service def718
* Improve performance by removing unneeded data items from hashtable code and reducing duplicate hash computation.
Packit Service def718
* Improve performance by storing small strings inside json_object
Packit Service def718
* Improve performance of json_object_to_json_string by removing variadic printf. commit 9ff0f49
Packit Service def718
* Issue #371: fix parsing of "-Infinity", and avoid needlessly copying the input when doing so.
Packit Service def718
* Fix stack buffer overflow in json_object_double_to_json_string_format() - commit 2c2deb87
Packit Service def718
* Fix various potential null ptr deref and int32 overflows
Packit Service def718
* Issue #332: fix a long-standing bug in array_list_put_idx() where it would attempt to free previously free'd entries due to not checking the current array length.
Packit Service def718
* Issue #195: use uselocale() instead of setlocale() in json_tokener to behave better in threaded environments.
Packit Service def718
* Issue #275: fix out of bounds read when handling unicode surrogate pairs.
Packit Service def718
* Ensure doubles that happen to be a whole number are emitted with ".0" - commit ca7a19
Packit Service def718
* PR#331: for Visual Studio, use a snprintf/vsnprintf wrapper that ensures the string is terminated.
Packit Service def718
* Fix double to int cast overflow in json_object_get_int64.
Packit Service def718
* Clamp double to int32 when narrowing in json_object_get_int.
Packit Service def718
* Use strtoll() to parse ints - instead of sscanf
Packit Service def718
* Miscellaneous smaller changes, including removing unused variables, fixing warning
Packit Service def718
 about uninitialized variables adding const qualifiers, reformatting code, etc...
Packit Service def718
Packit Service def718
Build changes:
Packit Service def718
--------------
Packit Service def718
* Add Appveyor and Travis build support
Packit Service def718
* Switch to using CMake when building on Windows with Visual Studio.
Packit Service def718
	A dynamic .dll is generated instead of a .lib
Packit Service def718
	config.h is now generated, config.h.win32 should no longer be manually copied
Packit Service def718
* Add support for MacOS through CMake too.
Packit Service def718
* Enable silent build by default
Packit Service def718
* Link against libm when needed
Packit Service def718
* Add support for building with AddressSanitizer
Packit Service def718
* Add support for building with Clang
Packit Service def718
* Add a --enable-threading configure option, and only use the (slower) __sync_add_and_fetch()/__sync_sub_and_fetch() function when it is specified.
Packit Service def718
Packit Service def718
List of new functions added:
Packit Service def718
----------------------------
Packit Service def718
### json_object.h
Packit Service def718
* array_list_bsearch()
Packit Service def718
* array_list_del_idx()
Packit Service def718
* json_object_to_json_string_length()
Packit Service def718
* json_object_get_userdata()
Packit Service def718
* json_object_set_userdata()
Packit Service def718
* json_object_object_add_ex()
Packit Service def718
* json_object_array_bsearch()
Packit Service def718
* json_object_array_del_idx()
Packit Service def718
* json_object_set_boolean()
Packit Service def718
* json_object_set_int()
Packit Service def718
* json_object_int_inc()
Packit Service def718
* json_object_set_int64()
Packit Service def718
* json_c_set_serialization_double_format()
Packit Service def718
* json_object_double_to_json_string()
Packit Service def718
* json_object_set_double()
Packit Service def718
* json_object_set_string()
Packit Service def718
* json_object_set_string_len()
Packit Service def718
* json_object_equal()
Packit Service def718
* json_object_deep_copy()
Packit Service def718
Packit Service def718
### json_pointer.h
Packit Service def718
* json_pointer_get()
Packit Service def718
* json_pointer_getf()
Packit Service def718
* json_pointer_set()
Packit Service def718
* json_pointer_setf()
Packit Service def718
Packit Service def718
### json_util.h
Packit Service def718
* json_object_from_fd()
Packit Service def718
* json_object_to_fd()
Packit Service def718
* json_util_get_last_err()
Packit Service def718
Packit Service def718
### json_visit.h
Packit Service def718
* json_c_visit()
Packit Service def718
Packit Service def718
### linkhash.h
Packit Service def718
* json_global_set_string_hash()
Packit Service def718
* lh_table_resize()
Packit Service def718
Packit Service def718
### printbuf.h
Packit Service def718
* printbuf_strappend()
Packit Service def718
Packit Service def718
Packit Service def718
0.12.1
Packit Service def718
======
Packit Service def718
Packit Service def718
  * Minimal changes to address compile issues.
Packit Service def718
Packit Service def718
0.12
Packit Service def718
====
Packit Service def718
Packit Service def718
  * Address security issues:
Packit Service def718
    * CVE-2013-6371: hash collision denial of service
Packit Service def718
    * CVE-2013-6370: buffer overflow if size_t is larger than int
Packit Service def718
Packit Service def718
  * Avoid potential overflow in json_object_get_double
Packit Service def718
Packit Service def718
  * Eliminate the mc_abort() function and MC_ABORT macro.
Packit Service def718
Packit Service def718
  * Make the json_tokener_errors array local.  It has been deprecated for
Packit Service def718
     a while, and json_tokener_error_desc() should be used instead.
Packit Service def718
Packit Service def718
  * change the floating point output format to %.17g so values with 
Packit Service def718
     more than 6 digits show up in the output.
Packit Service def718
Packit Service def718
  * Remove the old libjson.so name compatibility support.  The library is
Packit Service def718
      only created as libjson-c.so now and headers are only installed 
Packit Service def718
      into the ${prefix}/json-c directory.
Packit Service def718
Packit Service def718
  * When supported by the linker, add the -Bsymbolic-functions flag.
Packit Service def718
Packit Service def718
  * Various changes to fix the build on MSVC.
Packit Service def718
Packit Service def718
  * Make strict mode more strict:
Packit Service def718
    * number must not start with 0
Packit Service def718
    * no single-quote strings
Packit Service def718
    * no comments
Packit Service def718
    * trailing char not allowed
Packit Service def718
    * only allow lowercase literals
Packit Service def718
Packit Service def718
  * Added a json_object_new_double_s() convenience function to allow
Packit Service def718
    an exact string representation of a double to be specified when
Packit Service def718
    creating the object and use it in json_tokener_parse_ex() so
Packit Service def718
    a re-serialized object more exactly matches the input.
Packit Service def718
Packit Service def718
  * Add support NaN and Infinity
Packit Service def718
Packit Service def718
Packit Service def718
0.11
Packit Service def718
====
Packit Service def718
Packit Service def718
  * IMPORTANT: the name of the library has changed to libjson-c.so and
Packit Service def718
     the header files are now in include/json-c.
Packit Service def718
     The pkgconfig name has also changed from json to json-c.
Packit Service def718
     You should change your build to use appropriate -I and -l options.
Packit Service def718
     A compatibility shim is in place so builds using the old name will
Packit Service def718
     continue to work, but that will be removed in the next release.
Packit Service def718
  * Maximum recursion depth is now a runtime option.
Packit Service def718
     json_tokener_new() is provided for compatibility.
Packit Service def718
     json_tokener_new_ex(depth)
Packit Service def718
  * Include json_object_iterator.h in the installed headers.
Packit Service def718
  * Add support for building on Android.
Packit Service def718
  * Rewrite json_object_object_add to replace just the value if the key already exists so keys remain valid.
Packit Service def718
  * Make it safe to delete keys while iterating with the json_object_object_foreach macro.
Packit Service def718
  * Add a json_set_serializer() function to allow the string output of a json_object to be customized.
Packit Service def718
  * Make float parsing locale independent.
Packit Service def718
  * Add a json_tokener_set_flags() function and a JSON_TOKENER_STRICT flag.
Packit Service def718
  * Enable -Werror when building.
Packit Service def718
  * speed improvements to parsing 64-bit integers on systems with working sscanf
Packit Service def718
  * Add a json_object_object_length function.
Packit Service def718
  * Fix a bug (buffer overrun) when expanding arrays to more than 64 entries.
Packit Service def718
Packit Service def718
0.10
Packit Service def718
====
Packit Service def718
Packit Service def718
  * Add a json_object_to_json_string_ext() function to allow output to be
Packit Service def718
     formatted in a more human readable form.
Packit Service def718
  * Add json_object_object_get_ex(), a NULL-safe get object method, to be able
Packit Service def718
     to distinguish between a key not present and the value being NULL.
Packit Service def718
  * Add an alternative iterator implementation, see json_object_iterator.h
Packit Service def718
  * Make json_object_iter public to enable external use of the
Packit Service def718
     json_object_object_foreachC macro.
Packit Service def718
  * Add a printbuf_memset() function to provide an effecient way to set and
Packit Service def718
     append things like whitespace indentation.
Packit Service def718
  * Adjust json_object_is_type and json_object_get_type so they return
Packit Service def718
      json_type_null for NULL objects and handle NULL passed to
Packit Service def718
      json_objct_object_get().
Packit Service def718
  * Rename boolean type to json_bool.
Packit Service def718
  * Fix various compile issues for Visual Studio and MinGW.
Packit Service def718
  * Allow json_tokener_parse_ex() to be re-used to parse multiple object.
Packit Service def718
     Also, fix some parsing issues with capitalized hexadecimal numbers and
Packit Service def718
     number in E notation.
Packit Service def718
  * Add json_tokener_get_error() and json_tokener_error_desc() to better 
Packit Service def718
     encapsulate the process of retrieving errors while parsing.
Packit Service def718
  * Various improvements to the documentation of many functions.
Packit Service def718
  * Add new json_object_array_sort() function.
Packit Service def718
  * Fix a bug in json_object_get_int(), which would incorrectly return 0
Packit Service def718
    when called on a string type object.
Packit Service def718
    Eric Haszlakiewicz
Packit Service def718
  * Add a json_type_to_name() function.
Packit Service def718
    Eric Haszlakiewicz
Packit Service def718
  * Add a json_tokener_parse_verbose() function.
Packit Service def718
    Jehiah Czebotar
Packit Service def718
  * Improve support for null bytes within JSON strings.
Packit Service def718
    Jehiah Czebotar
Packit Service def718
  * Fix file descriptor leak if memory allocation fails in json_util
Packit Service def718
    Zachary Blair, zack_blair at hotmail dot com
Packit Service def718
  * Add int64 support. Two new functions json_object_net_int64 and
Packit Service def718
    json_object_get_int64. Binary compatibility preserved.
Packit Service def718
    Eric Haszlakiewicz, EHASZLA at transunion com
Packit Service def718
    Rui Miguel Silva Seabra, rms at 1407 dot org
Packit Service def718
  * Fix subtle bug in linkhash where lookup could hang after all slots
Packit Service def718
    were filled then successively freed.
Packit Service def718
    Spotted by Jean-Marc Naud, j dash m at newtraxtech dot com
Packit Service def718
  * Make json_object_from_file take const char *filename
Packit Service def718
    Spotted by Vikram Raj V, vsagar at attinteractive dot com
Packit Service def718
  * Add handling of surrogate pairs (json_tokener.c, test4.c, Makefile.am)
Packit Service def718
    Brent Miller, bdmiller at yahoo dash inc dot com
Packit Service def718
  * Correction to comment describing printbuf_memappend in printbuf.h
Packit Service def718
    Brent Miller, bdmiller at yahoo dash inc dot com
Packit Service def718
Packit Service def718
0.9
Packit Service def718
===
Packit Service def718
  * Add README.html README-WIN32.html config.h.win32 to Makefile.am
Packit Service def718
    Michael Clark, <michael@metaparadigm.com>
Packit Service def718
  * Add const qualifier to the json_tokener_parse functions
Packit Service def718
    Eric Haszlakiewicz, EHASZLA at transunion dot com
Packit Service def718
  * Rename min and max so we can never clash with C or C++ std library
Packit Service def718
    Ian Atha, thatha at yahoo dash inc dot com
Packit Service def718
  * Fix any noticeable spelling or grammar errors.
Packit Service def718
  * Make sure every va_start has a va_end.
Packit Service def718
  * Check all pointers for validity.
Packit Service def718
    Erik Hovland, erik at hovland dot org
Packit Service def718
  * Fix json_object_get_boolean to return false for empty string
Packit Service def718
    Spotted by Vitaly Kruglikov, Vitaly dot Kruglikov at palm dot com
Packit Service def718
  * optimizations to json_tokener_parse_ex(), printbuf_memappend()
Packit Service def718
    Brent Miller, bdmiller at yahoo dash inc dot com
Packit Service def718
  * Disable REFCOUNT_DEBUG by default in json_object.c
Packit Service def718
  * Don't use this as a variable, so we can compile with a C++ compiler
Packit Service def718
  * Add casts from void* to type of assignment when using malloc 
Packit Service def718
  * Add #ifdef __cplusplus guards to all of the headers
Packit Service def718
  * Add typedefs for json_object, json_tokener, array_list, printbuf, lh_table
Packit Service def718
    Michael Clark, <michael@metaparadigm.com>
Packit Service def718
  * Null pointer dereference fix. Fix json_object_get_boolean strlen test
Packit Service def718
    to not return TRUE for zero length string. Remove redundant includes.
Packit Service def718
    Erik Hovland, erik at hovland dot org
Packit Service def718
  * Fixed warning reported by adding -Wstrict-prototypes
Packit Service def718
    -Wold-style-definition to the compilatin flags.
Packit Service def718
    Dotan Barak, dotanba at gmail dot com
Packit Service def718
  * Add const correctness to public interfaces
Packit Service def718
    Gerard Krol, g dot c dot krol at student dot tudelft dot nl
Packit Service def718
Packit Service def718
0.8
Packit Service def718
===
Packit Service def718
  * Add va_end for every va_start
Packit Service def718
    Dotan Barak, dotanba at gmail dot com
Packit Service def718
  * Add macros to enable compiling out debug code
Packit Service def718
    Geoffrey Young, geoff at modperlcookbook dot org
Packit Service def718
  * Fix bug with use of capital E in numbers with exponents
Packit Service def718
    Mateusz Loskot, mateusz at loskot dot net
Packit Service def718
  * Add stddef.h include
Packit Service def718
  * Patch allows for json-c compile with -Werror and not fail due to
Packit Service def718
    -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations
Packit Service def718
    Geoffrey Young, geoff at modperlcookbook dot org
Packit Service def718
Packit Service def718
0.7
Packit Service def718
===
Packit Service def718
  * Add escaping of backslash to json output
Packit Service def718
  * Add escaping of foward slash on tokenizing and output
Packit Service def718
  * Changes to internal tokenizer from using recursion to
Packit Service def718
    using a depth state structure to allow incremental parsing
Packit Service def718
Packit Service def718
0.6
Packit Service def718
===
Packit Service def718
  * Fix bug in escaping of control characters
Packit Service def718
    Johan Björklund, johbjo09 at kth dot se
Packit Service def718
  * Remove include "config.h" from headers (should only
Packit Service def718
    be included from .c files)
Packit Service def718
    Michael Clark <michael@metaparadigm.com>
Packit Service def718
Packit Service def718
0.5
Packit Service def718
===
Packit Service def718
  * Make headers C++ compatible by change *this to *obj
Packit Service def718
  * Add ifdef C++ extern "C" to headers
Packit Service def718
  * Use simpler definition of min and max in bits.h
Packit Service def718
    Larry Lansing, llansing at fuzzynerd dot com
Packit Service def718
Packit Service def718
  * Remove automake 1.6 requirement
Packit Service def718
  * Move autogen commands into autogen.sh. Update README
Packit Service def718
  * Remove error pointer special case for Windows
Packit Service def718
  * Change license from LGPL to MIT
Packit Service def718
    Michael Clark <michael@metaparadigm.com>
Packit Service def718
Packit Service def718
0.4
Packit Service def718
===
Packit Service def718
  * Fix additional error case in object parsing
Packit Service def718
  * Add back sign reversal in nested object parse as error pointer
Packit Service def718
    value is negative, while error value is positive.
Packit Service def718
    Michael Clark <michael@metaparadigm.com>
Packit Service def718
Packit Service def718
0.3
Packit Service def718
===
Packit Service def718
  * fix pointer arithmetic bug for error pointer check in is_error() macro
Packit Service def718
  * fix type passed to printbuf_memappend in json_tokener
Packit Service def718
  * update autotools bootstrap instructions in README
Packit Service def718
    Michael Clark <michael@metaparadigm.com>
Packit Service def718
Packit Service def718
0.2
Packit Service def718
===
Packit Service def718
  * printbuf.c - C. Watford (christopher.watford@gmail.com)
Packit Service def718
    Added a Win32/Win64 compliant implementation of vasprintf
Packit Service def718
  * debug.c - C. Watford (christopher.watford@gmail.com)
Packit Service def718
    Removed usage of vsyslog on Win32/Win64 systems, needs to be handled
Packit Service def718
    by a configure script
Packit Service def718
  * json_object.c - C. Watford (christopher.watford@gmail.com)
Packit Service def718
    Added scope operator to wrap usage of json_object_object_foreach, this
Packit Service def718
    needs to be rethought to be more ANSI C friendly
Packit Service def718
  * json_object.h - C. Watford (christopher.watford@gmail.com)
Packit Service def718
    Added Microsoft C friendly version of json_object_object_foreach
Packit Service def718
  * json_tokener.c - C. Watford (christopher.watford@gmail.com)
Packit Service def718
    Added a Win32/Win64 compliant implementation of strndup
Packit Service def718
  * json_util.c - C. Watford (christopher.watford@gmail.com)
Packit Service def718
    Added cast and mask to suffice size_t v. unsigned int conversion
Packit Service def718
    correctness 
Packit Service def718
  * json_tokener.c - sign reversal issue on error info for nested object parse
Packit Service def718
    spotted by Johan Björklund (johbjo09 at kth.se)
Packit Service def718
  * json_object.c - escape " in json_escape_str
Packit Service def718
  * Change to automake and libtool to build shared and static library
Packit Service def718
    Michael Clark <michael@metaparadigm.com>
Packit Service def718
	
Packit Service def718
0.1
Packit Service def718
===
Packit Service def718
  * initial release