Commit Graph

712 Commits

Author SHA1 Message Date
Max Bruckner
4f58695ed3 tests: extract common functionality to common.c 2017-02-15 21:25:51 +01:00
Max Bruckner
3facca4792 parse functions: Only set type after successful
This sets the type of an item only if parsing was successful.

This means that in case of failure, the item's type will remain to be
cJSON_Invalid.
2017-02-15 21:25:48 +01:00
Max Bruckner
cf48ea8175 New Type: cJSON_Invalid
This assigns the macro cJSON_Invalid to 0.
2017-02-15 21:19:38 +01:00
Max Bruckner
702fd95af3 fix #106: potentially invalid free in cJSON_AddItemToObject 2017-02-15 20:45:23 +01:00
Max Bruckner
94117a5d23 Fix #105, double free when parse_string fails
This fixes a double free that happens when calling cJSON_Delete on an
item that has been used by parse_string and it failed parsing the
string.

The double free happens, because parse_string frees an alias of
item->valuestring, but doesn't set item->valuestring to NULL.
2017-02-15 15:37:38 +01:00
Max Bruckner
c3bd4463be cJSON_Utils: Guard use of %lu format string for size_t 2017-02-15 13:09:32 +01:00
Max Bruckner
9d7e8f1175 cJSON_Utils: Add casts to unsigned long, fix #103
Thanks @rrvirtual for the suggestion.
2017-02-09 15:09:06 +01:00
Max Bruckner
4047de4f6e fix potential NULL dereferences found by coverity 2017-02-08 03:00:44 +01:00
Max Bruckner
49b9336558 Merge pull request #92 from DaveGamble/tests
Introduce the cunity testing framework
2017-02-07 21:50:07 +01:00
Max Bruckner
d04a2aeccf README: Document additional CMake options 2017-02-07 21:44:37 +01:00
Max Bruckner
33e01ae087 Add support for Travis-CI 2017-02-07 21:35:38 +01:00
Max Bruckner
a09defec4c CMake: Add ENABLE_SANITIZERS flag
Enabling this flag enables AddressSanitizer and
UndefinedBehaviorSanitizer
2017-02-07 21:35:21 +01:00
Max Bruckner
21c02cd3e5 CMake: Add Valgrind support 2017-02-07 21:35:21 +01:00
Max Bruckner
5a36b71a80 unity-tests: parse_value 2017-02-07 21:35:21 +01:00
Max Bruckner
9041570eba unity-tests: parse_object 2017-02-07 21:35:21 +01:00
Max Bruckner
71b05fd4c2 unity-tests: parse_array 2017-02-07 21:35:21 +01:00
Max Bruckner
598b609c45 unity-tests: parse_string 2017-02-07 21:35:20 +01:00
Max Bruckner
b0e5209bde unity-tests: test parse_hex4 2017-02-07 21:35:20 +01:00
Max Bruckner
7fd536d7e0 unity-tests: parse_number 2017-02-07 21:35:20 +01:00
Max Bruckner
be0951dfa4 Move parse tests from test.c -> parse_example.c 2017-02-07 21:35:20 +01:00
Max Bruckner
86be961bb5 test.c: remove file related code 2017-02-07 21:35:19 +01:00
Max Bruckner
bb60d6def5 cunity: parse_examples: test example files
Test parsing and printing example files
2017-02-07 21:35:19 +01:00
Max Bruckner
896e52255b CMake: Build unity as library 2017-02-07 21:35:19 +01:00
Max Bruckner
12acc57967 unity: make it work with -Wconversion 2017-02-07 21:35:19 +01:00
Max Bruckner
6b9b57be22 Squashed 'tests/unity/' content from commit 1782bab
git-subtree-dir: tests/unity
git-subtree-split: 1782bab0bacd349a45bc215ff91f082912cd7a64
2017-02-07 21:30:57 +01:00
Max Bruckner
d19f3ae890 Merge commit '6b9b57be226a505a9c9cdd9ed029f22495ce04ec' as 'tests/unity' 2017-02-07 21:30:57 +01:00
Max Bruckner
e65ea3a45b Merge pull request #101 from DaveGamble/simplify-correctness
Simplify some code and improve correctness
2017-02-07 21:29:11 +01:00
Max Bruckner
87f77274de cJSON_SetNumberValue: Fix undefined double to int conversion
This might cause slight changes in behavior, but it shouldn't break
anything that is not already broken (for example the original macro
could either return a double, or an integer or whatever depending on if
object is NULL or not.)
2017-02-07 21:23:36 +01:00
Max Bruckner
dded751757 parse_string: remove useless first byte marks for utf8 2017-02-07 21:23:36 +01:00
Max Bruckner
d7b5545748 parse_hex4: deduplicate into a for loop 2017-02-07 21:23:36 +01:00
Max Bruckner
0747669972 parse_number: Switch to C library's strtod
Replaces the hand written floating point parser with the C library
implementation.
2017-02-07 21:23:36 +01:00
Max Bruckner
f09bdef15e Revert "test.c: Fix buffer overrun found by coverity"
This reverts commit c866abd842.

The length of this buffer was intentional. This looks like a false
positive.
2017-02-07 21:22:40 +01:00
Max Bruckner
7119a16b5f Merge pull request #100 from DaveGamble/goto-fail
Use goto fail for error handling and fix some memory leaks on the way
2017-02-07 21:13:51 +01:00
Max Bruckner
cc514583cc cJSON_Duplicate: goto fail error handling
Simplify error handling using goto fail and improve some names.
2017-02-07 20:59:55 +01:00
Max Bruckner
021b174ee1 parse_object: goto fail error handling
Makes the control flow easier to reason about and fixes a few potential
memory leaks.
2017-02-07 20:59:55 +01:00
Max Bruckner
99cd9af7d5 parse_array: goto fail error handling
Makes the control flow easier to reason about and fixes a few potential
memory leaks.
2017-02-07 20:59:55 +01:00
Max Bruckner
8656386c4f parse_string: goto fail error handling
Makes the control flow easier to reason about and fixes a few potential
memory leaks.
2017-02-07 20:59:55 +01:00
Max Bruckner
c866abd842 test.c: Fix buffer overrun found by coverity 2017-02-07 20:59:55 +01:00
Max Bruckner
1f5538f79d CMake: Fix several problems with automatic flag detection 2017-02-07 20:56:54 +01:00
Max Bruckner
9ed906758e fix null pointer dereferences found by coverity 2017-02-07 19:07:18 +01:00
Max Bruckner
2f712c7456 CMake: Fix compile flag detection on old CMake 2017-02-07 16:43:33 +01:00
Max Bruckner
d00ca18ac2 CMake: automatic detection of compiler flag compatibility 2017-02-07 14:51:29 +01:00
Max Bruckner
6cdb6894d4 Compiler flags: Add -fstack-protector-strong 2017-02-06 01:51:53 +01:00
Max Bruckner
ee0c920dff fix: add break in UTF-16 handling
Introducing the switch defaults in an earlier commit made UTF-16 \u
sequence handling broken.
2017-02-04 01:54:56 +01:00
Max Bruckner
af6d5d3d7c Add more consts to unsigned chars 2017-02-03 22:41:14 +01:00
Max Bruckner
cf9d57d56c Fix incorrect return 2017-02-03 20:34:37 +01:00
Max Bruckner
4d95639001 Merge pull request #98 from DaveGamble/compiler-options
More compiler flags + correctness improvements
2017-02-03 19:43:11 +01:00
Max Bruckner
3d3bfc6a4d Compiler flag -Wconversion
Makes type conversions explicit, if they alter a value
2017-02-03 18:36:13 +01:00
Max Bruckner
41e2837df1 Fix potentially undefined behavior when filling valueint
If the number is bigger or smaller than the biggest or smallest integer,
the behavior would be undefined.

This commit defines it as saturation behavior.
2017-02-03 18:36:13 +01:00
Max Bruckner
ecd5678527 Change all internal sizes to size_t 2017-02-03 18:36:12 +01:00