diff options
author | Conrad Irwin <conrad.irwin@gmail.com> | 2011-03-19 18:32:21 -0700 |
---|---|---|
committer | Lloyd Hilaiel <lloyd@hilaiel.com> | 2011-04-20 11:19:53 -0600 |
commit | 1df735562e13bca40f0960b1d9cdf5e7bc4a9dc5 (patch) | |
tree | e4a1ab8d49cd345a8b8f6b4339f57fee44e0673d | |
parent | 49116c941312b78ca6768b916fd0d247147f1f47 (diff) | |
download | yajl-1df735562e13bca40f0960b1d9cdf5e7bc4a9dc5.tar.gz |
Parse null bytes correctly.
Signed-off-by: Lloyd Hilaiel <lloyd@hilaiel.com>
-rw-r--r-- | src/yajl_encode.c | 7 | ||||
-rw-r--r-- | test/cases/zerobyte.json | 1 | ||||
-rw-r--r-- | test/cases/zerobyte.json.gold | bin | 0 -> 28 bytes |
3 files changed, 8 insertions, 0 deletions
diff --git a/src/yajl_encode.c b/src/yajl_encode.c index 5e921c0..830b530 100644 --- a/src/yajl_encode.c +++ b/src/yajl_encode.c @@ -173,6 +173,13 @@ void yajl_string_decode(yajl_buf buf, const unsigned char * str, Utf32toUtf8(codepoint, utf8Buf); unescaped = utf8Buf; + + if (codepoint == 0) { + yajl_buf_append(buf, unescaped, 1); + beg = ++end; + continue; + } + break; } default: diff --git a/test/cases/zerobyte.json b/test/cases/zerobyte.json new file mode 100644 index 0000000..09c5044 --- /dev/null +++ b/test/cases/zerobyte.json @@ -0,0 +1 @@ +"\u0000" diff --git a/test/cases/zerobyte.json.gold b/test/cases/zerobyte.json.gold Binary files differnew file mode 100644 index 0000000..b0c58fc --- /dev/null +++ b/test/cases/zerobyte.json.gold |