The current code in json_quote_str() only accepts strict printable ASCII
code points (i.e. 32-127), all other code points are dropped from the
JSON output.

This patch accepts code points 32-255.

json_quote_str() should handle non-ASCII characters.
---
 json.c |    4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/json.c b/json.c
index 9614143..6dc0345 100644
--- a/json.c
+++ b/json.c
@@ -59,7 +59,7 @@ json_quote_str(const void *ctx, const char *str)
        return NULL;

     for (ptr = str; *ptr; len++, ptr++) {
-       if (*ptr < 32 || *ptr == '\"' || *ptr == '\\')
+       if ((unsigned char)(*ptr) < 32 || *ptr == '\"' || *ptr == '\\')
            len++;
     }

@@ -70,7 +70,7 @@ json_quote_str(const void *ctx, const char *str)

     *ptr2++ = '\"';
     while (*ptr) {
-           if (*ptr > 31 && *ptr != '\"' && *ptr != '\\') {
+           if ((unsigned char)(*ptr) > 31 && *ptr != '\"' && *ptr != '\\') {
                *ptr2++ = *ptr++;
            } else {
                *ptr2++ = '\\';
--
1.7.0

Reply via email to