diff options
author | Hwankyu Jhun <h.jhun@samsung.com> | 2022-09-19 07:45:29 +0000 |
---|---|---|
committer | Hwankyu Jhun <h.jhun@samsung.com> | 2022-09-19 07:45:29 +0000 |
commit | ab8d49d2fdf501ced10464e69275c8de86eced5f (patch) | |
tree | b732f80783b5bbf4f8fba460d7109686f80ca166 | |
parent | 03ae0ef0750fef5422a3b29233fe31a967105436 (diff) | |
download | launchpad-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.cc | 12 |
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()); |