summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDiogo Ferreira <defer@cyngn.com>2016-09-07 15:40:34 +0200
committerUnpublished <unpublished2@gmx.net>2017-01-23 17:38:31 +0100
commitab9074c15e40e62db1842b596e8e16d972a6a231 (patch)
treef05688d8ab62c81e9101e88e8d3f9a54916e4a10
parentf8fddb48bbe167fc62e188a6585644b6ac2976f9 (diff)
downloadandroid_system_extras_su-ab9074c15e40e62db1842b596e8e16d972a6a231.tar.gz
android_system_extras_su-ab9074c15e40e62db1842b596e8e16d972a6a231.tar.bz2
android_system_extras_su-ab9074c15e40e62db1842b596e8e16d972a6a231.zip
su: utils: Stop leaking a string
get_property is leaking a copy of 'data' on every call, free it when we're done. Change-Id: I5bbc2ae314038f3d56e7bd9b010eca6d173deb37
-rw-r--r--utils.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/utils.c b/utils.c
index 09b9b60..a65f547 100644
--- a/utils.c
+++ b/utils.c
@@ -58,7 +58,9 @@ int get_property(const char *data, char *found, const char *searchkey, const cha
char *key, *value, *eol, *sol, *tmp;
if (data == NULL) goto defval;
int matched = 0;
- sol = strdup(data);
+ char *dup = strdup(data);
+
+ sol = dup;
while((eol = strchr(sol, '\n'))) {
key = sol;
*eol++ = 0;
@@ -82,6 +84,7 @@ int get_property(const char *data, char *found, const char *searchkey, const cha
break;
}
}
+ free(dup);
int len;
if (matched) {
len = strlen(value);