summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConrad Irwin <conrad.irwin@gmail.com>2011-03-19 18:32:21 -0700
committerLloyd Hilaiel <lloyd@hilaiel.com>2011-04-20 11:19:53 -0600
commit1df735562e13bca40f0960b1d9cdf5e7bc4a9dc5 (patch)
treee4a1ab8d49cd345a8b8f6b4339f57fee44e0673d
parent49116c941312b78ca6768b916fd0d247147f1f47 (diff)
downloadyajl-1df735562e13bca40f0960b1d9cdf5e7bc4a9dc5.tar.gz
Parse null bytes correctly.
Signed-off-by: Lloyd Hilaiel <lloyd@hilaiel.com>
-rw-r--r--src/yajl_encode.c7
-rw-r--r--test/cases/zerobyte.json1
-rw-r--r--test/cases/zerobyte.json.goldbin0 -> 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
new file mode 100644
index 0000000..b0c58fc
--- /dev/null
+++ b/test/cases/zerobyte.json.gold
Binary files differ