Browse Source

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

tags/json-c-0.13-20171207
Eric Haszlakiewicz 8 years ago
parent
commit
0a010a59eb
2 changed files with 11 additions and 5 deletions
  1. +1
    -1
      json_pointer.c
  2. +10
    -4
      tests/test_json_pointer.c

+ 1
- 1
json_pointer.c View 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 */
}
}



+ 10
- 4
tests/test_json_pointer.c View 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)


Loading…
Cancel
Save