mirror of
https://github.com/json-c/json-c.git
synced 2026-03-20 13:39:06 +08:00
2c2deb87f82149a78de9097c71607ea73100bca7
Issue originally found in the json-c 0.11 internal copy in GDAL but also found
in latest git version.
If doing things like
json_object* obj = json_object_new_double(1e300);
json_object_set_serializer(obj, json_object_double_to_json_string, "%f", NULL);
json_object_to_json_string(obj)
size = snprintf(buf, sizeof(buf),
format ? format :
(modf(jso->o.c_double, &dummy) == 0) ? "%.17g.0" : "%.17g",
jso->o.c_double);
will return a value greater than 128 since at least 300 characters are needed.
This value is then passed to printbuf_memappend(pb, buf, size); that tries to
read size bytes in buf.
So we should clamp size to sizeof(buf). And on Windows, _snprintf() returns -1
in that situation, so deal also with this case.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1682
Credit to OSS-Fuzz
Add a few more cases to test_parse to provide some examples of how parsing works; should help address the questions raised in Issue #302.
Issue #295: also check if size_t is the size of long long, to help support 64-bit Windows platforms.
Issue #295: also check if size_t is the size of long long, to help support 64-bit Windows platforms.
Issue #189: Eliminate use of MC_ERROR from json_util.c, and add a json_util_get_last_err() function to retrieve the error for those callers that care about it.
Issue #189: Eliminate use of MC_ERROR from json_util.c, and add a json_util_get_last_err() function to retrieve the error for those callers that care about it.
Issue #113: add "new" files to appropriate variables in Makefile, and note the need to run "make distcheck" as part of the release process.
json-c
JSON-C - A JSON implementation in C
JSON-C implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON objects. It aims to conform to RFC 7159.
Building on Unix with git, gcc and autotools
Home page for json-c: https://github.com/json-c/json-c/wiki
Prerequisites:
gcc,clang, or another C compilerlibtool>=2.2.6b
If you're not using a release tarball, you'll also need:
autoconf>=2.64(autoreconf)automake>=1.10.3
Make sure you have a complete libtool install, including libtoolize.
json-c GitHub repo: https://github.com/json-c/json-c
$ git clone https://github.com/json-c/json-c.git
$ cd json-c
$ sh autogen.sh
followed by
$ ./configure
$ make
$ make install
To build and run the test programs:
$ make check
Linking to libjson-c
If your system has pkgconfig,
then you can just add this to your makefile:
CFLAGS += $(shell pkg-config --cflags json-c)
LDFLAGS += $(shell pkg-config --libs json-c)
Without pkgconfig, you would do something like this:
JSON_C_DIR=/path/to/json_c/install
CFLAGS += -I$(JSON_C_DIR)/include/json-c
LDFLAGS+= -L$(JSON_C_DIR)/lib -ljson-c
Description
https://github.com/json-c/json-c is the official code repository for json-c. See the wiki for release tarballs for download. API docs at http://json-c.github.io/json-c/
Readme
5.7 MiB
Languages
C
86.8%
CMake
6.1%
Shell
3.4%
Meson
2.5%
C++
0.9%
Other
0.3%