Change a memcpy that should be a memmove within json_pointer_get, and fix memory leaks in of one the json_pointer tests.

This commit is contained in:
Eric Haszlakiewicz
2016-12-18 14:33:41 -05:00
parent 779b77a164
commit 0a010a59eb
2 changed files with 11 additions and 5 deletions

View File

@@ -33,7 +33,7 @@ static void string_replace_all_occurrences_with_char(char *s, const char *occur,
*p = repl_char; *p = repl_char;
p++; p++;
slen -= skip; 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 */
} }
} }

View File

@@ -261,15 +261,21 @@ static void test_wrong_inputs_set()
printf("PASSED - SET - failed 'cod' with path 'foo/bar'\n"); printf("PASSED - SET - failed 'cod' with path 'foo/bar'\n");
json_object_put(jo2); 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", 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", jo2)); /* re-using jo2 from above */
assert(0 != json_pointer_set(&jo1, "/fud/gaw/0", json_object_new_int(0))); // ownership of jo2 transferred into jo1
assert(0 != json_pointer_set(&jo1, "/fud/gaw/", json_object_new_int(0)));
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"); printf("PASSED - SET - failed to set index to non-array\n");
json_object_put(jo1); json_object_put(jo1);
json_object_put(jo2);
} }
int main(int argc, char **argv) int main(int argc, char **argv)