summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHwankyu Jhun <h.jhun@samsung.com>2022-09-19 07:45:29 +0000
committerHwankyu Jhun <h.jhun@samsung.com>2022-09-19 07:45:29 +0000
commitab8d49d2fdf501ced10464e69275c8de86eced5f (patch)
treeb732f80783b5bbf4f8fba460d7109686f80ca166
parent03ae0ef0750fef5422a3b29233fe31a967105436 (diff)
downloadlaunchpad-ab8d49d2fdf501ced10464e69275c8de86eced5f.tar.gz
launchpad-ab8d49d2fdf501ced10464e69275c8de86eced5f.tar.bz2
launchpad-ab8d49d2fdf501ced10464e69275c8de86eced5f.zip
Fix resource leak
The allocated memory has to be released. The xmlGetProp() returns the allocated value. It should be released using xmlFree(). Change-Id: I031d76c587ad8dcab9141c585d732893d916eea9 Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
-rw-r--r--src/launchpad-parser/launchpad_parser_plugin.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/launchpad-parser/launchpad_parser_plugin.cc b/src/launchpad-parser/launchpad_parser_plugin.cc
index f873673..d8b23c0 100644
--- a/src/launchpad-parser/launchpad_parser_plugin.cc
+++ b/src/launchpad-parser/launchpad_parser_plugin.cc
@@ -103,15 +103,21 @@ int LaunchpadParser::Install(xmlDocPtr doc, std::string pkgid) {
continue;
xmlChar* val = xmlGetProp(node, reinterpret_cast<const xmlChar*>("id"));
+ if (val == nullptr)
+ continue;
+
std::shared_ptr<LoaderInfo> info =
std::make_shared<LoaderInfo>(std::string(reinterpret_cast<char*>(val)));
+ xmlFree(val);
if (!IsValidId(info->GetId(), pkgid))
return -1;
xmlChar* ttl = xmlGetProp(node,
reinterpret_cast<const xmlChar*>("time-to-live"));
- if (ttl)
+ if (ttl) {
info->SetTimeToLive(std::stoi(std::string(reinterpret_cast<char*>(ttl))));
+ xmlFree(ttl);
+ }
for (xmlNode* iter = node->children; iter; iter = iter->next) {
if (!iter->name)
@@ -120,10 +126,11 @@ int LaunchpadParser::Install(xmlDocPtr doc, std::string pkgid) {
std::string(reinterpret_cast<const char*>(iter->name));
if (child_name == "preload-library") {
xmlChar* libname = xmlGetProp(iter,
- reinterpret_cast<const xmlChar*>("name"));
+ reinterpret_cast<const xmlChar*>("name"));
if (!libname)
continue;
info->AddPreloadLib(std::string(reinterpret_cast<char*>(libname)));
+ xmlFree(libname);
}
}
loader_list_.push_back(info);
@@ -158,6 +165,7 @@ int LaunchpadParser::UnInstall(xmlDocPtr doc, std::string pkgid) {
return -1;
std::string id = std::string(reinterpret_cast<char*>(val));
+ xmlFree(val);
if (!IsValidId(id, pkgid))
return -1;
remove(GetFilePath(id).c_str());