Commit Graph
1006 Commits
Author SHA1 Message Date
Tobias Stoeckmann 5385a566db Prevent truncation on custom double formatters.
A custom double formatter can lead to truncation of the rest of the
JSON document.

If a custom formatter completely fills the buffer used by snprintf
with a trailing dot or comma and the formatting option
JSON_C_TO_STRING_NOZERO has been specified, then an iterator moves
past the ending '\0' (off-by-one buffer overflow) to set an
additional '\0' and adds the first '\0' into the printbuf.

Since '\0' will eventually be considered the terminating character
of the complete printbuf result, all trailing characters are lost.

This leads to an incomplete JSON string as can be seen with the
test case.

The off-by-one can be noticed if compiled with address sanitizer.

Since this is a very special case and a malformed formatter could
do way more harm and is the responsibility of the user of this
library, this is just a protective measure to keep json-c code as
robust as possible.
2020-05-16 15:26:16 +02:00
Eric Haszlakiewicz 0a3d22b9bb Revert part of PR#606 and use isnan/isinf again, but provide macro implementations of those in math_compat.h is needed, as it seems to be on AIX and IBM i systems. 2020-05-16 01:29:18 +00:00
Eric Hawicz 1526c84a13 Merge pull request #606 from davidjmccann/master
Improved support for IBM operating systems
2020-05-15 21:15:18 -04:00
David McCann add7b13a9a Improved support for IBM operating systems
Fix compiler errors and warnings when building on IBM operating systems such as AIX and IBM i.
2020-05-14 15:39:35 +01:00
Eric Haszlakiewicz d414d3eabc Issue #604: add check for __MINGW32__ in snprintf_compat.h 2020-05-13 14:53:05 +00:00
Eric Haszlakiewicz 2e71fe0963 Display a bit of info about what exactly we're benchmarking. 2020-05-11 03:05:20 +00:00
Eric Haszlakiewicz 199c52e2db Ignore the bench/work and bench/data directories. 2020-05-11 03:04:10 +00:00
Eric Hawicz 3648c3ed2c Merge pull request #602 from ploxiln/parse_uint64_errno
fix json_parse_uint64() usage of errno
2020-05-10 21:15:47 -04:00
Pierce Lopez 003b58782b fix json_parse_uint64() usage of errno
introduced in #542
fixes #601
2020-05-10 13:38:12 -04:00
Eric Haszlakiewicz 26f080997d Fix snprintf on windows problem for test4. 2020-05-10 04:04:28 +00:00
Eric Haszlakiewicz 06742d6277 Issue #600: don't rename the static library on Windows, it _needs_ to have a different name because the dll build also creates a "json-c.lib" file. 2020-05-10 03:58:51 +00:00
Eric Haszlakiewicz a59d5acfab Re-format after recent change to fix linkhash. 2020-05-10 03:58:27 +00:00
Eric Haszlakiewicz 4f43a077a4 Issue #598: avoid building static libraries twice. 2020-05-10 03:48:45 +00:00
Eric Haszlakiewicz 519dfe1591 Issue #599: Fix the backwards check in lh_table_insert_w_hash() that was preventing adding more than 11 objects.
Add a test to check for this too.
2020-05-10 03:36:05 +00:00
Eric Hawicz 45b6416652 Merge branch 'master' of https://github.com/json-c/json-c 2020-05-08 22:25:15 -04:00
Eric Hawicz abc9a0731b Merge pull request #597 from ploxiln/json_parse_usage
json_parse demo: fix and use usage() function
2020-05-08 22:23:28 -04:00
Pierce Lopez 090ae4e4d4 json_parse demo: fix and use usage() function 2020-05-08 18:27:35 -04:00
Eric Hawicz 22870ac2bd Merge pull request #595 from dota17/static_shared
Support to build both static and shared libraries
2020-05-07 23:23:15 -04:00
hofnarr a100573eec cmake-configure: fix enable-static option 2020-05-08 02:27:06 +03:00
hofnarr 558ef8609c cmake: change variable name 2020-05-08 02:19:38 +03:00
hofnarr 929d74512a cmake: add list for build targets 2020-05-08 02:16:52 +03:00
dota17 e97fc20bfd update 2020-05-07 14:50:43 +08:00
Eric Hawicz 31243e4d12 Merge pull request #592 from stoeckmann/oob
Prevent out of boundary write on malicious input
2020-05-06 23:31:15 -04:00
Tobias Stoeckmann d07b910149 Fix integer overflows.
The data structures linkhash and printbuf are limited to 2 GB in size
due to a signed integer being used to track their current size.

If too much data is added, then size variable can overflow, which is
an undefined behaviour in C programming language.

Assuming that a signed int overflow just leads to a negative value,
like it happens on many sytems (Linux i686/amd64 with gcc), then
printbuf is vulnerable to an out of boundary write on 64 bit systems.
2020-05-06 20:46:12 +02:00
dota17 952db0f397 support to build both static and shared libraries 2020-05-06 14:46:47 +08:00
Tobias Stoeckmann 77d935b7ae Prevent division by zero in linkhash.
If a linkhash with a size of zero is created, then modulo operations
are prone to division by zero operations.

Purely protective measure against bad usage.
2020-05-04 19:46:45 +02:00
Tobias Stoeckmann 099016b7e8 Protect array_list_del_idx against size_t overflow.
If the assignment of stop overflows due to idx and count being
larger than SIZE_T_MAX in sum, out of boundary access could happen.

It takes invalid usage of this function for this to happen, but
I decided to add this check so array_list_del_idx is as safe against
bad usage as the other arraylist functions.
2020-05-04 19:41:16 +02:00
Eric Haszlakiewicz 8e3d3d5544 Make the benchmark work with pre-cmake versions of json-c. Fetch a few more data files. 2020-05-04 03:40:40 +00:00
Eric Haszlakiewicz c66e7377f3 In jc-bench.sh, decode the --before and --after args. Use a separate data dir to avoid re-downloading files when the work dir is cleared. 2020-05-04 03:24:39 +00:00
Eric Haszlakiewicz 8086314026 Issue #589: drop the rdrand test loops to just 3, tweak comments and add some links to bug reports, and decrease the nesting level of the has_rdrand() function. 2020-05-04 01:33:15 +00:00
Eric Hawicz a555d0e2f2 Merge pull request #589 from Xyene/detect-broken-rdrand
Detect broken RDRAND during initialization
2020-05-03 21:13:48 -04:00
Tudor Brindus 4d36b0287d Detect broken RDRAND during initialization
Some CPUs advertise RDRAND in CPUID, but return 0xFFFFFFFF
unconditionally. To avoid locking up later, test RDRAND during
initialization, and if it returns 0xFFFFFFFF, mark it as nonexistent.

Fixes #588.
2020-05-03 15:15:24 -04:00
Eric Hawicz 9b64c3e347 Fix printf format issues in apps/json_parse, and actually call the usage() function. 2020-05-03 14:55:12 -04:00
Eric Hawicz ee90110f9b Merge pull request #590 from Xyene/fix-cpuid-segfault
Fix segmentation fault in CPUID check
2020-05-03 14:52:31 -04:00
Tudor Brindus 0e5bbcaa16 Fix segmentation fault in CPUID check 2020-05-03 14:39:31 -04:00
Eric Haszlakiewicz f9605e9072 Fix cmake-configure to accept "--prefix=<foo>" in addition to "--prefix <foo>" (see also Issue #591) 2020-05-03 03:50:50 +00:00
Eric Haszlakiewicz 1059007024 Add an initial version of a benchmarking harness for json-c, to be able to more easily compare the performance of different library versions. 2020-04-27 04:00:00 +00:00
Eric Haszlakiewicz d9981f67dd Extend the CMakeLists.txt in the apps directory to be usable as a standalone build, to link against other versions of json-c.
Tweak json_parse.c slightly to allow it to build against older json-c versions.
2020-04-26 04:02:36 +00:00
Eric Haszlakiewicz 00272292a7 The json_parse command line app doesn't build on Windows, disable it. 2020-04-21 21:35:41 +00:00
Eric Haszlakiewicz 55d053118e Add an apps directory, and a json_parse program to parse an input file and report on memory usage.
This is intended to provide a way, during development, to test out the memory
and performance impacts of a change.
2020-04-21 03:57:56 +00:00
Eric Haszlakiewicz f6f76f9430 Add a JSON_TOKENER_ALLOW_TRAILING_CHARS flag for json_tokener_set_flags() to allow multiple objects to be parsed from input even when JSON_TOKENER_STRICT is set. 2020-04-21 03:53:44 +00:00
Eric Haszlakiewicz 05623b3a2e Add an tok_flags field to explicitly specify tokener flags in test_parse and eliminate the previous bogus calls to json_tokener_set_flags() 2020-04-21 03:53:44 +00:00
Eric Haszlakiewicz fa6bc1e2d7 Issue #471: always create directories with mode 0755, regardless of umask. 2020-04-21 03:19:17 +00:00
Eric Haszlakiewicz 8b511c402b Issue #585: don't install config.h 2020-04-21 01:13:21 +00:00
Eric Haszlakiewicz ba4527904a Add a few missing git commands to the release checklist, and change the S3 storage to "Standard", since it's actually (barely) cheaper than "Reduced Redundancy" now. 2020-04-19 04:17:29 +00:00
Eric Haszlakiewicz 2babb5b780 Update the master branch to version 0.0.14.99 2020-04-19 03:57:08 +00:00
Eric Haszlakiewicz 31ab57ca8b Fill in the ChangeLog for the upcoming 0.14 release. 2020-04-19 01:31:48 +00:00
Eric Haszlakiewicz 9ed00a694b Fill in a few more pre-release steps to match what we've done for the 0.14 release.
Move the list of contributors to the AUTHORS file.
2020-04-19 01:28:24 +00:00
Eric Haszlakiewicz 4badbe9c20 Rewrite the issued_closed_for_* files so they display a bit nicer. 2020-04-18 03:22:52 +00:00
Eric Haszlakiewicz 0a95f98b8d Explicitly mark several things in json_tokener deprecated. 2020-04-18 02:42:46 +00:00