Ramiro Polla
d98fc501fb
json_tokener: optimize check for number characters
...
speedup for 32-bit: ~5%
speedup for 64-bit: ~3%
2018-12-21 00:24:17 +01:00
Ramiro Polla
45c601bfa4
json_tokener: optimize check for hex characters
...
speedup for 32-bit: ~1%
speedup for 64-bit: ~1%
2018-12-21 00:24:17 +01:00
Ramiro Polla
158c248d5c
json_tokener: optimize check for whitespace characters
...
speedup for 32-bit: ~15%
speedup for 64-bit: ~ 2%
2018-12-21 00:24:17 +01:00
Eric Haszlakiewicz
f8c632f579
Issue #407 : fix incorrect casts in calls to ctype functions (isdigit and isspace) so we don't crash when asserts are enabled on certain platforms and characters > 128 are parsed.
2018-03-25 18:25:58 -04:00
Eric Haszlakiewicz
11ab365324
Deprecated a few typedefs, add docs on json_object_iter, move json_number_chars and json_hex-chars to json_object_private.h.
2017-12-05 09:20:59 -05:00
Eric Haszlakiewicz
0e7ec2ffcd
Add cast to int on tolower() to fix warnings about array subscripts.
2017-12-05 04:29:36 +00:00
Eric Haszlakiewicz
f81da5e57a
Rewrite the json_tokener_state_inf handling in json_tokener to be simpler, and avoid needless copying of the input into a temporary buffer.
2017-11-27 00:20:11 -05:00
Eric Haszlakiewicz
48f7e389fb
Fix parsing of "-Infinity" when the "-" and "Infinity" are split across multiple calls.
...
Add several additional test cases for partial parsing of infinity values.
2017-11-27 00:04:33 -05:00
Eric Haszlakiewicz
4d1e0b4409
Issue #371 : fix parsing of "-Infinity" (although in a somewhat different location than PR#372 used), and add a case to test_parse to check for this.
2017-11-26 22:44:39 -05:00
Haffon
b301f4ea01
rollback api to 0.12
2017-09-07 10:02:21 +08:00
Haffon
3141c3976b
1.make it can been compiled with Visual Studio 2010
...
2.replace json_object_get/put API with json_object_retain/release, as they operate the reference counter, and confused with array_list_get/put_idx.
3.replace array_list_get/put_idx API with array_list_get/insert to make them more clear to use.
2017-08-22 13:53:47 +08:00
marxin
014924ba89
Add FALLTHRU comment to handle GCC7 warnings.
2017-03-21 08:42:11 +01:00
Alexandru Ardelean
8cb86a583a
strdup_compat.h: re-spin this compat header ; use math_compat.h as template
...
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com >
2016-11-22 16:37:29 +02:00
Emmanuele Bassi
7601f20d70
Revert "compat/strdup.h: move common compat check for strdup() to own file"
...
This reverts commit aaba8c1080 .
This commit breaks builddir != srcdir build, but, more importantly, it
also adds a dependency on a header, "config.h", which is not installed
and it's supposed to be private — since it's generated at configuration
time and it's not meant to be used by projects compiling against a
library.
2016-11-07 20:51:11 +00:00
Alexandru Ardelean
aaba8c1080
compat/strdup.h: move common compat check for strdup() to own file
...
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com >
2016-11-03 15:51:33 +02:00
Eric Haszlakiewicz
36a28fcb0c
Issue #275 : fix out of bounds read when handling unicode surrogate pairs.
2016-10-05 23:15:51 -04:00
Eric Haszlakiewicz
4d62de3898
Revert bogus change to json_object_get() made in f40b08d8 that caused it to always return NULL. (Issue #259 )
...
Also undo NULL check in json_tokener_set_flags(): it's not at all valid toi
try to set flags on a NULL pointer, and doing so should not be silently
ignored.
2016-08-11 17:05:41 -04:00
Nicola Spanti (RyDroid)
f40b08d8f0
Minor changes in C source code
2016-08-08 15:20:41 +02:00
Eric Haszlakiewicz
9688f343a5
Issue #246 : Include xlocale.h too, to get locale_t defined, since not all OSes include that in locale.h
2016-08-02 22:25:05 -04:00
Eric Haszlakiewicz
fa76e4a8c9
Issue #195 : Actually call uselocale() in the new locale handling code in json_tokener.
...
Also, be sure the right locale_t is freed if we fail on the second uselocale.
Finally, fix test_locale so it *doesn't* use json_object_to_json_string as
that will simple re-emit the original parsed string values.
2016-07-31 14:43:14 -04:00
Eric Haszlakiewicz
4091b9c87e
Issue #195 : use uselocale() instead of setlocale() in json_tokener to behave better in threaded environments.
2016-07-30 21:34:58 -04:00
Even Rouault
77a4276a8c
Fix various potential null ptr deref and int32 overflows
...
This fix errors that can happen when ingesting very large JSON files
when hitting the maximum heap size of the process.
2016-01-11 12:15:54 +01:00
Anmol Sarma
467102fa78
Remove superfluous NULL checks
2015-10-01 14:14:03 +05:30
Anmol Sarma
f37b0a10a5
Fix possible memory leak
2015-10-01 14:09:09 +05:30
James Myatt
9be71700eb
json_tokener requires INF and NAN
2015-03-04 10:45:35 +00:00
Eric Haszlakiewicz
68d856f618
Merge pull request #168 from bugness-chl/master
...
Tightening the number parsing algorithm
2015-03-03 22:41:31 -05:00
chl
99d8fc975e
Tightening the number parsing algorithm
...
Some badly formated "numbers" could get partly parsed,
resulting in truncated results instead of raising an
error.
Examples :
'1.2.3' -> (double)1.2
'2015-01-15' -> (int)2015
This patch is not perfect (ex: input can still end with a 'E', which
is forbidden by json.org doc) but should avoid non-sensically
formated input.
Tests added.
2015-02-05 01:50:37 +01:00
Michael Vetter
fcf5ad1bd6
Remove trailing whitespace
2014-08-26 14:48:59 +02:00
Eric Haszlakiewicz
d4e81f9ec8
Move the json_min() and json_max() macros to json_util.h and mark everything else in bits.h deprecated.
...
Eliminate all uses of bits.h within the json-c code.
2014-05-04 22:33:26 -04:00
Petar Koretić
259c5c0b5f
Remove unused variable 'size'
2014-04-11 10:03:40 +02:00
Michael Clark
64e36901a0
Patch to address the following issues:
...
* CVE-2013-6371: hash collision denial of service
* CVE-2013-6370: buffer overflow if size_t is larger than int
2014-04-09 13:48:21 +08:00
Eric Haszlakiewicz
f9136f6852
Make the json_tokener_errors array local. It has been deprecated for a while, and json_tokener_error_desc() should be used instead.
2014-03-22 21:41:24 -04:00
Eric Haszlakiewicz
05da316b9c
Issue #103 : allow Infinity and -Infinity to be parsed.
2014-03-22 17:28:40 -04:00
Markus Stenberg
a1c8991e13
nan function requires -lm on some platforms; use of NAN is better, if available.
2014-03-18 16:29:49 +02:00
Eric Haszlakiewicz
0eedf3802f
Issue#102 - add support for parsing "NaN".
2014-03-09 16:41:33 -04:00
Eric Haszlakiewicz
020fa65724
Merge pull request #112 from TazeTSchnitzel/LowercaseLiterals
...
Only allow lowercase literals in STRICT mode
2014-02-11 23:21:50 -05:00
Eric Haszlakiewicz
56df93d128
Fix Issue #111 : Fix off-by-one error when range checking the input to json_tokener_error_desc().
2014-02-11 23:16:53 -05:00
Andrea Faulds
bda0540cb9
Only allow lowercase literals in STRICT mode
2013-11-14 21:13:32 +00:00
Eric Haszlakiewicz
51993c28c2
Added a json_object_new_double_s() convenience function to allow an exact string representation of a double to be specified when creating the object and use it in json_tokener_parse_ex() so a re-serialized object more exactly matches the input.
...
Add json_object_free_userdata() and json_object_userdata_to_json_string() too.
2013-09-11 20:27:39 -05:00
Eric Haszlakiewicz
ef43fe3571
Merge pull request #96 from rouault/remove_strdnup
...
Remove redefinition of strndup() which is no longer used in the codebase
2013-09-08 13:35:28 -07:00
Eric Haszlakiewicz
02aa6f01f4
Merge pull request #94 from remicollet/issue-strict2
...
more strictness
2013-09-08 13:29:05 -07:00
Even Rouault
86dd55a74a
Fix potential out-of-bounds read in json_tokener_error_desc
...
Found by Coverity. The number of elements of an array 'ar' is found by
sizeof(ar)/sizeof(ar[0]) and not sizeof(ar)
76const char *json_tokener_error_desc(enum json_tokener_error jerr)
77{
78 int jerr_int = (int)jerr;
1. Condition "jerr_int < 0", taking false branch
2. Condition "jerr_int > 112 /* (int)sizeof (gdal_json_tokener_errors) */", taking false branch
79 if (jerr_int < 0 || jerr_int > (int)sizeof(json_tokener_errors))
80 return "Unknown error, invalid json_tokener_error value passed to json_tokener_error_desc()";
CID 1076806 (#1 of 1): Out-of-bounds read (OVERRUN)3. overrun-local: Overrunning array "gdal_json_tokener_errors" of 14 8-byte elements at element index 112 (byte offset 896) using index "jerr" (which evaluates to 112).
81 return json_tokener_errors[jerr];
82}
2013-09-08 11:31:38 +02:00
Remi Collet
4039f91cab
trailing char not allowed in strict mode
2013-08-23 13:40:01 +02:00
Remi Collet
87fa32dfe0
no comment in strict mode
2013-08-21 15:41:40 +02:00
Even Rouault
1a957c2edc
Remove redefinition of strndup() which is no longer used in the codebase
2013-08-12 20:49:19 +02:00
Remi Collet
a07ef3d197
no single-quote string in strict mode
2013-08-06 10:41:14 +02:00
Eric Haszlakiewicz
d032aad1f4
Minor spell check.
2013-06-19 09:14:19 -05:00
Remi Collet
e9ee4ae18a
in strick mode, number must not start with 0
2013-06-13 13:40:01 +02:00
Eric Haszlakiewicz
e8161a11bb
Issue #15 : add a way to set a JSON_TOKENER_STRICT flag to forbid commas at the end of arrays and objects.
2013-03-31 20:05:36 -05:00
William Dignazio
32eddd66f5
Fix broken build by using ADVANCE_CHAR macro return.
...
We forget to check or use the return value of the ADVANCE_CHAR macro,
and upon compilation an error is thrown because of its lack of use. This
patch checks to see if the macro was successful, and if not replaces the
offending character with a replacement.
2013-03-06 20:18:14 -05:00