1
0
mirror of https://github.com/kgabis/parson.git synced 2025-02-04 06:42:55 +08:00

17 Commits

Author SHA1 Message Date
Krzysztof Gabis
ba29f4eda9 1.5.3: Fixes compilation on mac os (due to sprintf being deprecated) #209 2023-10-31 20:44:37 +01:00
Valerie Avva Lim
60c37844d7
1.5.2: fix Arithmetic overflow (#204)
* fix Arithmetic overflow

* address PR comment and update version
2023-05-21 10:15:39 +02:00
Krzysztof Gabis
3c4ee26dbb 1.5.1: Fixes a bug in json_object_clear.
Issue #200
2023-02-15 22:59:21 +01:00
Alexandru Ardelean
1314bf8ad6
1.5.0: Using memcpy instead of sprintf for string literals, adds json_set_number_serialization_function 2022-11-12 22:00:17 +01:00
Krzysztof Gabis
a34e725282 1.4.0: Accepting trailing commas in objects and arrays
Issue #178
2022-03-06 21:27:20 +01:00
Cristian Pop
4158fdbea7
1.3.1: Fixes size_t conversion on x64 systems. Excluding build/ in .gitignore. (#177)
* Fixing size_t conversion on x64 systems. Excluding build/ in .gitignore.

* 1.3.1: Increments version.

Co-authored-by: Krzysztof Gabis <kgabis@gmail.com>
2022-02-24 20:22:46 +01:00
Krzysztof Gabis
af848c27b4 1.3.0: Adds json_set_float_serialization_format function. 2021-12-11 18:11:18 +01:00
Krzysztof Gabis
fd77bcddc1 1.2.1: Not using SIZE_MAX macro (issue #167) 2021-08-06 15:46:45 +02:00
Krzysztof Gabis
6b3d6f42f2 1.2.0: JSON objects are now implemented using hash maps, PARSON_VERSION defines (issue #37) 2021-08-05 20:24:57 +02:00
Krzysztof Gabis
2d7b3ddf12 1.1.3: Ignoring floating point underflow (issue #161) 2021-05-26 14:01:51 +02:00
Disconnect3d
ab7f5e5401
Fix memleak when parsing keys with embedded null bytes (#157)
* Fix memleak when parsing key with embedded null byte

This commit fixes and adds a test for a memory leak that occurs when
parsing strings with keys that have a null byte embedded in them.

This memory leak can be triggered with the following line, where this
call returns a `NULL`:
```c
        json_parse_string("{\"\\u0000\"")
```

This memory leak happens in the `parse_object_value` function in here:
```
        new_key = get_quoted_string(string, &key_len);  <---- ALLOCATION
        /* We do not support key names with embedded \0 chars */
        if (new_key == NULL || key_len != strlen(new_key)) {
            json_value_free(output_value);
            return NULL;                       <---- `new_key` NOT FREED
        }
        SKIP_WHITESPACES(string);
        if (**string != ':') {
            parson_free(new_key);
            json_value_free(output_value);
            return NULL;
        }
```

* Increments version to 1.1.2

Co-authored-by: Krzysztof Gabis <kgabis@gmail.com>
2021-05-03 18:47:03 +02:00
benswick
60b2c69f17
Improved serialization performance (#156)
* Update parson.c

Get objects by index instead of key in json_serialize_to_buffer_r().

* Increments version and updates licence date.

Co-authored-by: Krzysztof Gabis <kgabis@gmail.com>
2021-04-07 22:23:01 +02:00
reuben olinsky
102a4467e1
Add support for string values with embedded '\0' characters (#137)
* Add support for strings with \0 chars

* address feedback

* Increments minor version, adds comments, changes license year

Co-authored-by: Krzysztof Gabis <kgabis@gmail.com>
2020-04-16 21:55:56 +02:00
ɹɐɯsǝʎ
186680a511 Guard against potential integer overflow (#133)
* Guard against potential integer overflow

If int res holds the value INT_MAX then adding 1 results in undefined
behavior. To guard against this possibility, cast res to size_t, not
the result of res + 1.

Fixes #132

* Increments version.

* More consitent parentheses when casting to size_t.
2019-12-03 10:59:32 +01:00
dan soucy
9d63e76014 Avoid truncating strings warning (#131)
* Avoid truncating strings warning

GCC 8 introduced the `stringop-truncation` warning, which warns for
uses of `strncpy` of the form `strncpy(out, in, strlen(in))`. This
is often helpful, as this call would not copy the trailing `\0`,
potentially leading to subtle bugs.

With optimizations enabled, the function `parson_strndup` is
inlined, allowing the compiler to see that this call to `strncpy` is
of the form described above. GCC therefore outputs the warning.

In this case, the out buffer has already had the terminating `\0`
written to the end. Thus it is not necessary to copy it. GCC 9.2 is
not quite smart enough to recognize this, so it warns.

The warning is silenced by using `memcpy` instead of `strncpy`.

Although I have not benchmarked it, this change might reasonably
improve the performance of `parson_strndup`. `strncpy` checks every
byte for `\0` in addition to counting to `n`. `memcpy` does not need
to check whether the bytes it copies are `\0`.

However, if `parson_strndup` is frequently passed `char *`s with a
`\0` somewhere in the middle, then `memcpy` will copy more bytes
than necessary, hurting performance. In this case, a better solution
might be:

```
- output_string[n] = `\0`;
- strncpy(output_string, string, n);
+ strncpy(output_string, string, n+1);
```

* Increments parson's version.
2019-12-02 23:24:29 +01:00
Matthias Schoepfer
da126c2aba CMakeLists.txt: Minimal fixes, added GNUInstallDirs and fixed cmake config loc
Also set version for proper shared lib

Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
2019-08-14 18:19:51 +02:00
Ewerton Scaboro da Silva
74ea152aa7 Add CMakeLists.txt with install definitions 2019-05-07 17:52:46 +00:00