488 Commits

Author SHA1 Message Date
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 c866abd84259acacf79524921a0ca6634fd71ddd.

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
Max Bruckner
28b9ba4334 Change all internal strings to unsigned char* 2017-02-03 15:59:00 +01:00
Max Bruckner
b182ced1d6 Compiler flag -Wswitch-default + add defaults 2017-02-03 12:21:36 +01:00
Max Bruckner
fe18403935 Compiler flag -Wundef + fix incorrect macro 2017-02-03 12:14:50 +01:00
Max Bruckner
981f59b163 Release Version 1.2.1 v1.2.1 2017-01-30 19:36:36 +01:00
Max Bruckner
e4eadb9a81 Merge pull request #97 from DaveGamble/fix96-null-pointer-dereference
Fix potential null pointer dereference in cJSON_Utils
Fixes #96
2017-01-30 19:34:33 +01:00
Max Bruckner
ff0681e4fd Utils: PatchDetach: Check for invalid patch string 2017-01-30 19:30:16 +01:00
Max Bruckner
a2309a509d Utils: InplaceDecodePointerString: Check for NULL 2017-01-30 19:29:52 +01:00
Max Bruckner
c49ffbfba8 cJSON_Version: returns a version string
This is useful to programmatically find out the version of cJSON that
has been used (useful in case of scripting language bindings for
example).
2017-01-12 20:37:29 +01:00
Max Bruckner
e7533aa6f0 Put version information in the header
This is important so that it is always known which version of the
library is used, especially if the C and Header files have just been
copy pasted to another code base.
2017-01-12 20:35:13 +01:00
Max Bruckner
de8eaaba89 Release version 1.2.0 v1.2.0 2017-01-09 12:25:31 +01:00
Max Bruckner
b2da44d6cb Merge pull request #90 from DaveGamble/cJSON_Raw
Add support for raw JSON
2017-01-09 12:22:00 +01:00
Max Bruckner
f6998a6a34 Contributors: Add Jiri Zouhar 2017-01-09 12:02:21 +01:00
Max Bruckner
e3e0b5150b cJSON_CreateRaw: Format fixes 2017-01-05 21:33:52 +01:00
Max Bruckner
1df987a170 cJSON_strdup: Check for NULL string 2017-01-05 21:31:17 +01:00
Max Bruckner
ddadb44a67 cJSON_Raw: Additional checks in print_value 2017-01-05 21:30:37 +01:00
Max Bruckner
9ef44fc0b6 Remove C++ comment in header 2017-01-05 21:12:10 +01:00
Max Bruckner
8c58e62597 Merge remote-tracking branch 'loigu/master' into cJSON_Raw 2017-01-05 21:07:08 +01:00
Max Bruckner
8893e39712 gitignore: ignore *.orig 2017-01-04 20:40:34 +01:00
Max Bruckner
3d6ae11340 Make cJSON C++ compatible 2016-12-28 12:33:20 +01:00
Max Bruckner
a1f2600883 Contributors: Add Romain Porte 2016-12-28 12:29:03 +01:00
Max Bruckner
fcc85bdfbc Gitignore: Add Makefile output 2016-12-28 12:23:56 +01:00
Max Bruckner
7d08a3518a Merge pull request #88 from MicroJoe/fix-readme-tests
Fix bad CMake argument in README
2016-12-28 12:20:37 +01:00
Romain Porte
cc486a0354 Fix bad CMake argument in README 2016-12-27 11:32:41 +01:00
Max Bruckner
fcc89c4bb2 Move increment out of loop condition fixes #85 2016-12-15 11:12:42 +01:00
Max Bruckner
a0431e226f Merge pull request #83 from gatzka/feature/cast_qual_v3
Introduce compiler check if const is casted away.
2016-12-08 21:59:32 +07:00
Stephan Gatzka
89edfb6741 Warn if cast removes a type qualifier like const. 2016-12-08 13:21:30 +01:00
Stephan
e69db83de5 Temporarily disable warning when const is cast away.
There was a long running discussion here
https://github.com/DaveGamble/cJSON/pull/80 how to provide const
correctness for users of cJSON.

To avoid breaking changes for users of cJSON v1 it was decided to
disable this warning.

pragma was tested with gcc 5.4.0/6.2.1 and clang 3.8/3.9.
2016-12-08 13:21:18 +01:00
Max Bruckner
5310da351d contributors: Add Alper Akcan v1.1.0 2016-12-06 09:01:12 +07:00
Max Bruckner
68196f5b14 Release version 1.1.0 2016-12-06 08:56:23 +07:00
Max Bruckner
d992cd46e6 test: Handle cJSON_PrintPreallocated return values correctly 2016-12-06 08:47:44 +07:00
Max Bruckner
84b48121bb header: explain PrintPreallocated return value 2016-12-06 08:46:48 +07:00
Max Bruckner
f10e2f884a test: exit on malloc failure 2016-12-06 08:41:51 +07:00
Max Bruckner
eeb6d237b6 Merge pull request #81 from alperakcan/master
fix memory leak in cJSON_Duplicate
2016-12-06 08:36:47 +07:00
Alper Akcan
5b4420298f fix memory leak in cJSON_Duplicate 2016-12-05 14:23:04 +03:00
Max Bruckner
e1eb06fae0 cJSON.h warn about write access to constants (#80)
Add a comment that warns about potential write access to constant memory
locations after using cJSON_AddItemToObjectCS.
2016-11-30 22:14:16 +07:00
Max Bruckner
6aefa45056 Merge pull request #79 from gatzka/fix/test
Make print_preallocated static.
2016-11-29 08:19:33 +07:00
Stephan Gatzka
345d57e9e5 Make print_preallocated static.
Otherwise compilation failes due to missing prototypes.
2016-11-28 20:21:38 +01:00
Max Bruckner
3da18a2df9 contributors: Add Kyle Chisholm 2016-11-29 00:01:21 +07:00
Max Bruckner
bf17703012 Merge branch 'print_preallocated' 2016-11-28 23:08:25 +07:00
Max Bruckner
6622c54f18 Handle out of memory when printing string 2016-11-28 23:06:38 +07:00
Kyle Chisholm
8df4cd46eb more concise return 2016-11-28 22:59:55 +07:00
Kyle Chisholm
3917fb5255 use print_preallocated function to test printout of JSON 2016-11-28 22:59:55 +07:00
Kyle Chisholm
99896d879c function to print and compare to preallocated buffer 2016-11-28 22:59:55 +07:00
Kyle Chisholm
4d1dcaa160 check print_value return 2016-11-28 22:59:54 +07:00
Kyle Chisholm
de93d76d0b changed to cJSON_PrintPreallocated, added flag in printbuffer 2016-11-28 22:59:53 +07:00
Kyle Chisholm
602c241a0b fixed "make test" on Mac (clang) 2016-11-28 22:53:36 +07:00
Kyle Chisholm
23dafa4739 added Print function call for pre-allocated buffer 2016-11-28 22:53:33 +07:00
Max Bruckner
59cf4112d2 Merge pull request #78 from gatzka/feature/gcc_check_strict_overflow_v2
gcc check strict overflow v2
2016-11-28 22:29:03 +07:00
Stephan
5cfda2292f Warn if compiler optimizes based on asumption signed overflow does not occur.
This switch is only active when making a release build.
2016-11-28 09:12:17 +01:00
Stephan
038b04d80a Take out len from condition check.
Otherwise, the check is just undefined behaviour. gcc even takes out
this check because len can never be zero if len does not wrap around.

Found with -Wstrict-overflow=2
2016-11-28 09:11:14 +01:00
Max Bruckner
624bc85143 contributors: add Stephan Gatzka 2016-11-28 01:03:04 +07:00
Max Bruckner
1f0ad823c9 Merge pull request #75 from gatzka/feature/enhance_gcc_checks_v2
Enhance gcc checks v2
2016-11-28 00:58:45 +07:00
Stephan Gatzka
29b6643bab Warn about missing prototypes.
This switch warns about missing prototypes. It does not warn if
functions are declared static. So this switch encourages the usage of
static whenever possible. This enables the compiler to perform inlining.
2016-11-27 18:22:12 +01:00
Stephan Gatzka
a8e1368697 Make function static when possible.
This is a prerequisite to later enable -Wmissing-prototypes.
2016-11-27 18:20:58 +01:00
Stephan Gatzka
bea0be48b6 Perform additional format checks. 2016-11-27 18:20:41 +01:00
Stephan Gatzka
91d11cd050 Warn if casting a pointer increases alignment of target. 2016-11-27 18:19:52 +01:00
Stephan Gatzka
9591ecddbe Warn about variables initialized by themselves. 2016-11-27 18:19:07 +01:00
Stephan Gatzka
1568015de6 Warn about shadowing variables and functions. 2016-11-27 18:18:00 +01:00
Stephan Gatzka
7ed067e680 Rename some variables to avoid shadowing. 2016-11-27 18:16:28 +01:00
Max Bruckner
4703f01cf4 Make/CMake: Fix use of compiler flags
CMake: Option was not enabled by default as intended.
Makefile: Flags were not passed when building the tests
2016-11-26 22:09:20 +07:00
Max Bruckner
d0a9f46888 Release v1.0.2 v1.0.2 2016-11-25 08:22:41 +07:00
Max Bruckner
23b269d5f9 Rename bool -> cjbool, fix #71 2016-11-25 08:19:18 +07:00
Max Bruckner
11fd27ade7 Change version to 1.0.1 v1.0.1 2016-11-20 01:08:54 +07:00
Max Bruckner
65ac0a1a2b cJSON_Utils tests: fix formatting 2016-11-19 17:50:01 +07:00
Max Bruckner
679004914f Define a boolean type
This is not changing the behavior of the code, but it is improving the
readability and helps to make the intention clearer.

One thing to take care: 'true' should never be compared against.
2016-11-19 17:29:22 +07:00
Max Bruckner
b88da9b0de Initialize all variables 2016-11-19 17:29:21 +07:00
Max Bruckner
a5ff796c20 Replace 0 with more expressive NULL or '\0' 2016-11-19 17:28:14 +07:00
Max Bruckner
d47339e274 cJSON_Utils: Fix comparing of cJSON_ types
When comparing the type, it has to be masked with 0xFF because of
cJSON_IsConst and cJSON_IsReference.
2016-11-18 22:52:52 +07:00
Max Bruckner
aafb64a1c5 Merge pull request #66 from DaveGamble/v1
Release version 1.0.0
v1.0.0
2016-11-17 08:19:08 +07:00
Max Bruckner
3a2151d267 README: Document ENABLE_CUSTOM_COMPILER_FLAGS 2016-11-15 20:23:47 +07:00
Max Bruckner
f2cb5e4dd4 CMake: ENABLE_CUSTOM_COMPILER_FLAGS option 2016-11-15 20:21:57 +07:00
Max Bruckner
46a3a102d5 CMake: Fix indentation 2016-11-15 20:21:30 +07:00
Max Bruckner
1f3b95e2b1 README: Compiles on FreeBSD 2016-11-15 20:19:02 +07:00
Max Bruckner
706636fb20 Replace -ansi with -std=c89 for better compatibility 2016-11-15 20:03:11 +07:00