]> granicus.if.org Git - json-c/commitdiff
Change a memcpy that should be a memmove within json_pointer_get, and fix memory...
authorEric Haszlakiewicz <erh+git@nimenees.com>
Sun, 18 Dec 2016 19:33:41 +0000 (14:33 -0500)
committerEric Haszlakiewicz <erh+git@nimenees.com>
Sun, 18 Dec 2016 19:33:41 +0000 (14:33 -0500)
json_pointer.c
tests/test_json_pointer.c

index 3648f8d66514581695c400895f2449db0ec8a851..380d6e52f8bcd3496b80fff86170d629ccfd37c7 100644 (file)
@@ -33,7 +33,7 @@ static void string_replace_all_occurrences_with_char(char *s, const char *occur,
                *p = repl_char;
                p++;
                slen -= skip;
-               memcpy(p, (p + skip), slen - (p - s) + 1); /* includes null char too */
+               memmove(p, (p + skip), slen - (p - s) + 1); /* includes null char too */
        }
 }
 
index f42d010402c4b5f9dc802c4c7bcb546f26945f97..c3733dea339d75e33a234dd505c64de6e7cd36a5 100644 (file)
@@ -261,15 +261,21 @@ static void test_wrong_inputs_set()
        printf("PASSED - SET - failed 'cod' with path 'foo/bar'\n");
        json_object_put(jo2);
 
-       assert(0 != json_pointer_set(&jo1, "/fud/gaw", (jo2 = json_object_new_string("whatever"))));
+       jo2 = json_object_new_string("whatever");
+       assert(0 != json_pointer_set(&jo1, "/fud/gaw", jo2));
        assert(0 == json_pointer_set(&jo1, "/fud", json_object_new_object()));
        assert(0 == json_pointer_set(&jo1, "/fud/gaw", jo2)); /* re-using jo2 from above */
-       assert(0 != json_pointer_set(&jo1, "/fud/gaw/0", json_object_new_int(0)));
-       assert(0 != json_pointer_set(&jo1, "/fud/gaw/", json_object_new_int(0)));
+       // ownership of jo2 transferred into jo1
+
+       jo2 = json_object_new_int(0);
+       assert(0 != json_pointer_set(&jo1, "/fud/gaw/0", jo2));
+       json_object_put(jo2);
+       jo2 = json_object_new_int(0);
+       assert(0 != json_pointer_set(&jo1, "/fud/gaw/", jo2));
+       json_object_put(jo2);
        printf("PASSED - SET - failed to set index to non-array\n");
 
        json_object_put(jo1);
-       json_object_put(jo2);
 }
 
 int main(int argc, char **argv)