diff options
author | Eric Hawicz <erh+git@nimenees.com> | 2022-07-24 14:15:42 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-24 14:15:42 -0400 |
commit | 2a2d861bc0c77a97529895665c643389645686b5 (patch) | |
tree | 7db2ba90458a360670b2b050e6fb8b026fc59b3c | |
parent | d28ac67dde77566f53a97f22b4ea7cb36afe6582 (diff) | |
parent | 213bb5caa11ed2182848d86c86f8e9ab4c75642a (diff) | |
download | json-c-2a2d861bc0c77a97529895665c643389645686b5.tar.gz |
Merge pull request #781 from dddaniel/master
Fix memory leak with emtpy strings in json_object_set_string
-rw-r--r-- | json_object.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/json_object.c b/json_object.c index e52ca40..581b1e2 100644 --- a/json_object.c +++ b/json_object.c @@ -1323,11 +1323,18 @@ static int _json_object_set_string_len(json_object *jso, const char *s, size_t l // length as int, cap length at INT_MAX. return 0; - dstbuf = get_string_component_mutable(jso); curlen = JC_STRING(jso)->len; - if (curlen < 0) - curlen = -curlen; + if (curlen < 0) { + if (len == 0) { + free(JC_STRING(jso)->c_string.pdata); + JC_STRING(jso)->len = curlen = 0; + } else { + curlen = -curlen; + } + } + newlen = len; + dstbuf = get_string_component_mutable(jso); if ((ssize_t)len > curlen) { |