You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by st...@apache.org on 2016/01/19 19:02:02 UTC

[5/5] incubator-mynewt-larva git commit: escape string characters when encoding...

escape string characters when encoding...


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/commit/4fb9ec50
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/tree/4fb9ec50
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/diff/4fb9ec50

Branch: refs/heads/master
Commit: 4fb9ec506fd010a1dd4b85b7a1abeb56ab990f08
Parents: 7dd823f
Author: Sterling Hughes <st...@apache.org>
Authored: Fri Jan 15 10:12:47 2016 -0800
Committer: Sterling Hughes <st...@apache.org>
Committed: Tue Jan 19 10:01:51 2016 -0800

----------------------------------------------------------------------
 libs/json/src/json_encode.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/4fb9ec50/libs/json/src/json_encode.c
----------------------------------------------------------------------
diff --git a/libs/json/src/json_encode.c b/libs/json/src/json_encode.c
index ccaf615..94a877f 100644
--- a/libs/json/src/json_encode.c
+++ b/libs/json/src/json_encode.c
@@ -68,7 +68,24 @@ json_encode_value(struct json_encoder *encoder, struct json_value *jv)
             encoder->je_write(encoder->je_arg, encoder->je_encode_buf, len);
             break;
         case JSON_VALUE_TYPE_STRING:
-            encoder->je_write(encoder->je_arg, jv->jv_val.str, jv->jv_len);
+            for (i = 0; i < jv->jv_len; i++) {
+                switch (jv->jv_val.str[i]) {
+                    case '"':
+                    case '/':
+                    case '\\':
+                    case '\t':
+                    case '\r':
+                    case '\n':
+                    case '\f':
+                    case '\b':
+                        encoder->je_write(encoder->je_arg, "\\", 
+                                sizeof("\\")-1);
+                        break;
+                }
+
+                encoder->je_write(encoder->je_arg, (char *) &jv->jv_val.str[i], 
+                        1);
+            }
             break;
         case JSON_VALUE_TYPE_ARRAY:
             JSON_ENCODE_ARRAY_START(encoder);