diff --git a/ChangeLog.md b/ChangeLog.md index e0df939fb8..5dbc7f774d 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -19,6 +19,8 @@ Bug fixes: - Fixed OSS-Fuzz stack overflow issues [\#225](https://github.com/danielaparker/jsoncons/issues/225) +- OSS-Fuzz failed throw issue in CBOR parser [\#235](https://github.com/danielaparker/jsoncons/issues/235) + Changes: - The cbor_option name `enable_typed_arrays` has been deprecated and diff --git a/README.md b/README.md index d8b67a2c93..7dae919189 100644 --- a/README.md +++ b/README.md @@ -365,20 +365,20 @@ Output: ``` Marilyn C begin_object -name: application +key: application string_value: hiking -name: reputons +key: reputons begin_array begin_object -name: rater +key: rater string_value: HikingAsylum -name: assertion +key: assertion string_value: advanced -name: rated +key: rated string_value: Marilyn C -name: rating +key: rating double_value: 0.9 -name: confidence +key: confidence double_value: 0.99 end_object end_array @@ -417,7 +417,7 @@ int main() { case staj_event_type::string_value: // Or std::string_view, if supported - std::cout << "string_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; default: std::cout << "Unhandled event type\n"; diff --git a/doc/Examples.md b/doc/Examples.md index c93f33358d..092e93476f 100644 --- a/doc/Examples.md +++ b/doc/Examples.md @@ -386,31 +386,31 @@ Output: ``` begin_array begin_object -name: author +key: author string_value: Haruki Murakami -name: title +key: title string_value: Hard-Boiled Wonderland and the End of the World -name: isbn +key: isbn string_value: 0679743464 -name: publisher +key: publisher string_value: Vintage -name: date +key: date string_value: 1993-03-02 -name: price +key: price double_value: 19 end_object begin_object -name: author +key: author string_value: Graham Greene -name: title +key: title string_value: The Comedians -name: isbn +key: isbn string_value: 0099478374 -name: publisher +key: publisher string_value: Vintage Classics -name: date +key: date string_value: 2005-09-21 -name: price +key: price double_value: 16 end_object end_array diff --git a/doc/Pages/index.md b/doc/Pages/index.md index ebcf047103..9708622519 100644 --- a/doc/Pages/index.md +++ b/doc/Pages/index.md @@ -314,20 +314,20 @@ Output: ``` Marilyn C begin_object -name: application +key: application string_value: hiking -name: reputons +key: reputons begin_array begin_object -name: rater +key: rater string_value: HikingAsylum -name: assertion +key: assertion string_value: advanced -name: rated +key: rated string_value: Marilyn C -name: rating +key: rating double_value: 0.9 -name: confidence +key: confidence double_value: 0.99 end_object end_array diff --git a/doc/ref/basic_json_cursor.md b/doc/ref/basic_json_cursor.md index af2d1c9f48..c1346d7ea5 100644 --- a/doc/ref/basic_json_cursor.md +++ b/doc/ref/basic_json_cursor.md @@ -170,39 +170,39 @@ int main() switch (event.event_type()) { case staj_event_type::begin_array: - std::cout << "begin_array\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::end_array: - std::cout << "end_array\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::begin_object: - std::cout << "begin_object\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::end_object: - std::cout << "end_object\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::key: // Or std::string_view, if supported - std::cout << "name: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::string_value: // Or std::string_view, if supported - std::cout << "string_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::null_value: - std::cout << "null_value: " << "\n"; + std::cout << event.event_type() << ": " << "\n"; break; case staj_event_type::bool_value: - std::cout << "bool_value: " << std::boolalpha << event.get() << "\n"; + std::cout << event.event_type() << ": " << std::boolalpha << event.get() << "\n"; break; case staj_event_type::int64_value: - std::cout << "int64_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::uint64_value: - std::cout << "uint64_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::double_value: - std::cout << "double_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; default: std::cout << "Unhandled event type\n"; @@ -215,31 +215,31 @@ Output: ``` begin_array begin_object -name: author +key: author string_value: Haruki Murakami -name: title +key: title string_value: Hard-Boiled Wonderland and the End of the World -name: isbn +key: isbn string_value: 0679743464 -name: publisher +key: publisher string_value: Vintage -name: date +key: date string_value: 1993-03-02 -name: price +key: price double_value: 19 end_object begin_object -name: author +key: author string_value: Graham Greene -name: title +key: title string_value: The Comedians -name: isbn +key: isbn string_value: 0099478374 -name: publisher +key: publisher string_value: Vintage Classics -name: date +key: date string_value: 2005-09-21 -name: price +key: price double_value: 16 end_object end_array diff --git a/doc/ref/bson/basic_bson_cursor.md b/doc/ref/bson/basic_bson_cursor.md index 98116be4ce..56d640c82e 100644 --- a/doc/ref/bson/basic_bson_cursor.md +++ b/doc/ref/bson/basic_bson_cursor.md @@ -138,39 +138,39 @@ int main() switch (event.event_type()) { case staj_event_type::begin_array: - std::cout << "begin_array\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::end_array: - std::cout << "end_array\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::begin_object: - std::cout << "begin_object\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::end_object: - std::cout << "end_object\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::key: // Or std::string_view, if supported - std::cout << "name: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::string_value: // Or std::string_view, if supported - std::cout << "string_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::null_value: - std::cout << "null_value: " << "\n"; + std::cout << event.event_type() << ": " << "\n"; break; case staj_event_type::bool_value: - std::cout << "bool_value: " << std::boolalpha << event.get() << "\n"; + std::cout << event.event_type() << ": " << std::boolalpha << event.get() << "\n"; break; case staj_event_type::int64_value: - std::cout << "int64_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::uint64_value: - std::cout << "uint64_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::double_value: - std::cout << "double_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; default: std::cout << "Unhandled event type\n"; @@ -183,31 +183,31 @@ Output: ``` begin_array begin_object -name: author +key: author string_value: Haruki Murakami -name: title +key: title string_value: Hard-Boiled Wonderland and the End of the World -name: isbn +key: isbn string_value: 0679743464 -name: publisher +key: publisher string_value: Vintage -name: date +key: date string_value: 1993-03-02 -name: price +key: price double_value: 19 end_object begin_object -name: author +key: author string_value: Graham Greene -name: title +key: title string_value: The Comedians -name: isbn +key: isbn string_value: 0099478374 -name: publisher +key: publisher string_value: Vintage Classics -name: date +key: date string_value: 2005-09-21 -name: price +key: price double_value: 16 end_object end_array diff --git a/doc/ref/bson/bson.md b/doc/ref/bson/bson.md index d7473c50c9..29f5ee7bd8 100644 --- a/doc/ref/bson/bson.md +++ b/doc/ref/bson/bson.md @@ -12,6 +12,8 @@ data structures, using [json_type_traits](../json_type_traits.md). [basic_bson_encoder](basic_bson_encoder.md) +[bson_options](bson_options.md) + #### Mappings between BSON and jsoncons data items BSON data item | jsoncons data item |jsoncons tag diff --git a/doc/ref/cbor/basic_cbor_cursor.md b/doc/ref/cbor/basic_cbor_cursor.md index 9da70fe18b..0c53c51d16 100644 --- a/doc/ref/cbor/basic_cbor_cursor.md +++ b/doc/ref/cbor/basic_cbor_cursor.md @@ -138,40 +138,40 @@ int main() switch (event.event_type()) { case staj_event_type::begin_array: - std::cout << "begin_array\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::end_array: - std::cout << "end_array\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::begin_object: - std::cout << "begin_object\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::end_object: - std::cout << "end_object\n"; + std::cout << event.event_type() << "\n"; break; case staj_event_type::key: // Or std::string_view, if supported - std::cout << "name: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::string_value: // Or std::string_view, if supported - std::cout << "string_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::null_value: - std::cout << "null_value: " << "\n"; + std::cout << event.event_type() << ": " << "\n"; break; case staj_event_type::bool_value: - std::cout << "bool_value: " << std::boolalpha << event.get() << "\n"; + std::cout << event.event_type() << ": " << std::boolalpha << event.get() << "\n"; break; case staj_event_type::int64_value: - std::cout << "int64_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::uint64_value: - std::cout << "uint64_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; case staj_event_type::half_value: case staj_event_type::double_value: - std::cout << "double_value: " << event.get() << "\n"; + std::cout << event.event_type() << ": " << event.get() << "\n"; break; default: std::cout << "Unhandled event type\n"; @@ -184,31 +184,31 @@ Output: ``` begin_array begin_object -name: author +key: author string_value: Haruki Murakami -name: title +key: title string_value: Hard-Boiled Wonderland and the End of the World -name: isbn +key: isbn string_value: 0679743464 -name: publisher +key: publisher string_value: Vintage -name: date +key: date string_value: 1993-03-02 -name: price +key: price double_value: 19 end_object begin_object -name: author +key: author string_value: Graham Greene -name: title +key: title string_value: The Comedians -name: isbn +key: isbn string_value: 0099478374 -name: publisher +key: publisher string_value: Vintage Classics -name: date +key: date string_value: 2005-09-21 -name: price +key: price double_value: 16 end_object end_array diff --git a/doc/ref/csv/csv.md b/doc/ref/csv/csv.md index c025a264d6..257df8a429 100644 --- a/doc/ref/csv/csv.md +++ b/doc/ref/csv/csv.md @@ -254,27 +254,27 @@ Output: ``` begin_array begin_object -name: index_id +key: index_id string_value: EUR_LIBOR_06M -name: observation_date +key: observation_date string_value: 2015-10-23 -name: rate +key: rate double_value: 0.0000214 end_object begin_object -name: index_id +key: index_id string_value: EUR_LIBOR_06M -name: observation_date +key: observation_date string_value: 2015-10-26 -name: rate +key: rate double_value: 0.0000143 end_object begin_object -name: index_id +key: index_id string_value: EUR_LIBOR_06M -name: observation_date +key: observation_date string_value: 2015-10-27 -name: rate +key: rate double_value: 0.0000001 end_object end_array diff --git a/doc/ref/msgpack/msgpack.md b/doc/ref/msgpack/msgpack.md index a1f7282643..2b401b37c5 100644 --- a/doc/ref/msgpack/msgpack.md +++ b/doc/ref/msgpack/msgpack.md @@ -13,6 +13,8 @@ data structures, using [json_type_traits](../json_type_traits.md). [basic_msgpack_encoder](basic_msgpack_encoder.md) +[msgpack_options](msgpack_options.md) + #### Mappings between MessagePack and jsoncons data items MessagePack data item | jsoncons data item|jsoncons tag diff --git a/doc/ref/staj_event.md b/doc/ref/staj_event.md index bf7f93f924..1935bcd9eb 100644 --- a/doc/ref/staj_event.md +++ b/doc/ref/staj_event.md @@ -14,11 +14,12 @@ A JSON-like data event. | end_object | | | | begin_array | | | | end_array | | | -| name | "foo" | `get()`, `get`, `get()` | +| key | "foo" | `get()`, `get`, `get()` | | string_value | "1000" | `get()`, `get`, `get()`, `get()`, `get()` | | byte_string_value | 0x660x6F0x6F | `get()`, `get()` | | int64_value | -1000 | `get()`, `get()`, `get`, `get()` | | uint64_value | 1000 | `get()`, `get()`, `get()`, `get()`, `get()` | +| half_value | 1.5 (as double) | `get()`, `get()` | | double_value | 125.72 | `get()`, `get()` | | bool_value | true | `get()`, `get()` | | null_value | | `get()` | diff --git a/doc/ref/ubjson/ubjson.md b/doc/ref/ubjson/ubjson.md index 5137212f76..c618c8646e 100644 --- a/doc/ref/ubjson/ubjson.md +++ b/doc/ref/ubjson/ubjson.md @@ -12,6 +12,8 @@ data structures, using [json_type_traits](../json_type_traits.md). [basic_ubjson_encoder](basic_ubjson_encoder.md) +[ubjson_options](ubjson_options.md) + #### Mappings between UBJSON and jsoncons data items UBJSON data item | jsoncons data item|jsoncons tag diff --git a/include/jsoncons/staj_reader.hpp b/include/jsoncons/staj_reader.hpp index 8afeffbbf6..3f7a868c14 100644 --- a/include/jsoncons/staj_reader.hpp +++ b/include/jsoncons/staj_reader.hpp @@ -52,7 +52,7 @@ std::basic_ostream& operator<<(std::basic_ostream& os, staj_event_ JSONCONS_ARRAY_OF_CHAR(CharT,end_array_name,'e','n','d','_','a','r','r','a','y') JSONCONS_ARRAY_OF_CHAR(CharT,begin_object_name,'b','e','g','i','n','_','o','b','j','e','c','t') JSONCONS_ARRAY_OF_CHAR(CharT,end_object_name,'e','n','d','_','o','b','j','e','c','t') - JSONCONS_ARRAY_OF_CHAR(CharT,name_key,'k','e','y') + JSONCONS_ARRAY_OF_CHAR(CharT,key_name,'k','e','y') JSONCONS_ARRAY_OF_CHAR(CharT,string_value_name,'s','t','r','i','n','g','_','v','a','l','u','e') JSONCONS_ARRAY_OF_CHAR(CharT,byte_string_value_name,'b','y','t','e','_','s','t','r','i','n','g','_','v','a','l','u','e') JSONCONS_ARRAY_OF_CHAR(CharT,null_value_name,'n','u','l','l','_','v','a','l','u','e') @@ -86,7 +86,7 @@ std::basic_ostream& operator<<(std::basic_ostream& os, staj_event_ } case staj_event_type::key: { - os << name_key; + os << key_name; break; } case staj_event_type::string_value: