Commit Graph

557 Commits

Author SHA1 Message Date
1bc1a9748a Merge pull request #112 from DaveGamble/print-tests
Add tests for print functions
2017-02-20 11:15:53 +01:00
de36476092 tests: print_value 2017-02-20 11:11:02 +01:00
983a4cd286 tests: parse_objects: Fix name of test 2017-02-20 11:11:01 +01:00
b6abef94ff tests: print_object 2017-02-20 11:11:01 +01:00
3d66766231 tests: print_array 2017-02-20 11:11:01 +01:00
924122904e tests: print_number 2017-02-20 11:11:01 +01:00
87691a86e5 cJSON_SetNumberValue: Fix compiler warning with -Waddress 2017-02-20 11:11:01 +01:00
8aa324fdc8 tests: print_string 2017-02-20 11:11:01 +01:00
3c4d309f62 ensure: Don't accept empty printbuffers anymore 2017-02-19 04:20:21 +01:00
9bf531ca05 Remove printing without buffer 2017-02-19 04:16:57 +01:00
80354bdb06 cJSON_Print: Use printbuffer 2017-02-19 04:03:02 +01:00
fe2e0956ad Merge pull request #111 from DaveGamble/fuzzing
partial build system integration of the afl fuzzing tool
2017-02-19 02:44:28 +01:00
cf71f3d627 fuzzing: script to prepare linux kernel for afl 2017-02-18 13:18:09 +01:00
da551c753f fuzzing: Speed up afl using persistent mode (in proccess fuzzing) 2017-02-18 13:18:09 +01:00
ae4681b787 fuzzing: use llvm source code instrumentation 2017-02-18 13:18:08 +01:00
c5a09a32a9 fuzzing: Fuzz different print methods
This is achieved by encoding the type of function used in the first two
bytes.

First byte:
b: buffered

Second byte:
f: formatted
2017-02-18 13:18:08 +01:00
4785070ad3 fuzzing: Fuzz printing as well.
With one big limitation: It can only be fuzzed with what has been
parsed by the library beforehand.
2017-02-18 12:52:16 +01:00
0e0cd5bae5 CMake: Add ENABLE_FUZZING and "afl" target 2017-02-18 12:52:16 +01:00
44512f643e Merge pull request #110 from DaveGamble/ensure-improvements
ensure improvements
2017-02-18 12:18:18 +01:00
331c18d09a ensure: only memcopy what's necessary
We don't need to copy the entire printbuffer, only the part that is
used.
2017-02-18 12:07:17 +01:00
4fff92140e ensure: use realloc if possible 2017-02-18 12:07:17 +01:00
fc1d4b07df ensure: if printbuffer is null: cJSON_malloc
This allowed for the removal of a lot of if (p) checks.
2017-02-18 11:35:59 +01:00
bd073343fa rename skip -> skip_whitespace 2017-02-17 19:37:31 +01:00
7c722dca5f CMake: Add target "check" that builds and runs tests 2017-02-17 13:59:26 +01:00
4fce9cce86 Release version 1.3.0 v1.3.0 2017-02-17 01:42:02 +01:00
415962da34 Merge pull request #109 from DaveGamble/simplify-parse
Simplify parsing
2017-02-16 21:23:36 +01:00
b41264d164 Remove uint8_t because it's not part of C89 2017-02-16 21:22:43 +01:00
0f271dcf63 parse_hex4: make input pointer const 2017-02-16 21:02:26 +01:00
ead389aba2 parse_value: improve variable names + const correctness 2017-02-16 21:02:25 +01:00
698dc528f4 parse_object: improve variable names + const correctness 2017-02-16 21:02:25 +01:00
3dc6339025 parse_array: improve variable names + const correctness 2017-02-16 20:08:59 +01:00
15592c50f6 parse_number: improve variable names + const correctness 2017-02-16 20:02:18 +01:00
efb5e1bc93 parse_string: Improve const correctnes of pointers 2017-02-16 20:00:12 +01:00
ace5047782 parse_string: reduce mental burden when reading the code
This restructures parse_string in a way, that you need to keep less
state in your head to understand the code.

This is achieved by:
* only changing the input pointer (current position) at a few places
(not all throughout)
* splitting out the UTF16 handling into a separate function
* renaming the variables so you know what they do without additional
context
2017-02-16 19:49:03 +01:00
03f23738bb parse_object: simplify to one do-while loop 2017-02-16 19:49:02 +01:00
24dbf29360 parse_array: simplify to one do-while loop 2017-02-16 19:49:02 +01:00
b6974ecbc9 Makefile: Update compiler options 2017-02-16 12:52:00 +01:00
12b2daccf3 parse_{object,array}: set child only after parsing
This only attaches the parsed linked lists to the items passed to
parse_object and parse_array.
2017-02-16 01:03:43 +01:00
f8d0c47bdb Remove unnecessary assignment and silence clang analyzer 2017-02-16 00:31:57 +01:00
9f6fa94c91 ensure: replace pow2gt with multiplication by two
This replaces the bit fiddling involved with calculating a new buffer
size by just multiplying the required length by two, paving the way to a
complete switch to size_t at a later point in time.
2017-02-16 00:23:38 +01:00
123bb1af7b cJSON: prevent incompatible C and header versions
Introduces a preprocessor directive that aborts the compilation if the
version numbers in the header don't match with the numbers in the c
file.
2017-02-15 23:21:50 +01:00
cf862d0fed implement AddItemToObject using AddItemToObjectCS 2017-02-15 21:46:24 +01:00
57d105d498 Merge pull request #108 from DaveGamble/cJSON_Invalid
Add new type cJSON_Invalid
2017-02-15 21:28:14 +01:00
5986edba1d tests: Ensure that failed parsing returns invalid items 2017-02-15 21:25:52 +01:00
c6e1a281f9 tests: assertion macros 2017-02-15 21:25:52 +01:00
4f58695ed3 tests: extract common functionality to common.c 2017-02-15 21:25:51 +01:00
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
cf48ea8175 New Type: cJSON_Invalid
This assigns the macro cJSON_Invalid to 0.
2017-02-15 21:19:38 +01:00
702fd95af3 fix #106: potentially invalid free in cJSON_AddItemToObject 2017-02-15 20:45:23 +01:00
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