summaryrefslogtreecommitdiffstats
path: root/libopkg/pkg_parse.c
diff options
context:
space:
mode:
authorticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2008-12-15 00:18:44 (EST)
committer ticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2008-12-15 00:18:44 (EST)
commitf7eccd4bb54039f94312a56b40599d7cb446951e (patch)
tree4dec467a1f7c7827dfdf306bf22944e51c7a7d3b /libopkg/pkg_parse.c
parent90299e3df5c5d5eb4ae2189b11e44ec83995ca62 (diff)
opkg: (leak fixing, day 2) lots and lots of memory leaks fixed
git-svn-id: http://opkg.googlecode.com/svn/trunk@115 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libopkg/pkg_parse.c')
-rw-r--r--libopkg/pkg_parse.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libopkg/pkg_parse.c b/libopkg/pkg_parse.c
index cd0c6dc..cf3a882 100644
--- a/libopkg/pkg_parse.c
+++ b/libopkg/pkg_parse.c
@@ -140,12 +140,15 @@ int parseVersion(pkg_t *pkg, char *raw)
pkg->revision = "";
pkg->familiar_revision = "";
+ if (!pkg->version)
+ {
pkg->version= malloc(strlen(raw)+1);
if ( pkg->version == NULL ) {
fprintf(stderr, "%s: out of memory \n", __FUNCTION__);
return ENOMEM;
}
strcpy(pkg->version, raw);
+ }
hyphen= strrchr(pkg->version,'-');
@@ -304,6 +307,7 @@ int pkg_parse_raw(pkg_t *pkg, char ***raw, pkg_src_t *src, pkg_dest_t *dest)
else if(isGenericFieldType("Installed-Time:", *lines)) {
char *time_str = parseGenericFieldType("Installed-Time", *lines);
pkg->installed_time = strtoul(time_str, NULL, 0);
+ free (time_str);
}
break;
@@ -376,7 +380,11 @@ out:;
*raw = lines;
/* If the ipk has not a Provides line, we insert our false line */
if ( pkg_false_provides==1)
- pkg->provides_str = parseDependsString ((char *)"Provides: opkg_internal_use_only ", &pkg->provides_count);
+ {
+ pkg->provides_count = 1;
+ pkg->provides_str = malloc (sizeof (char*));
+ pkg->provides_str[0] = strdup ("opkg_internal_use_only");
+ }
if (pkg->name) {
return 0;