bmcweb: fix a possible buffer overflow issue
This commit fixes a possible buffer overflow that could occur if dbus
paths don't follow the dbus specification.
Change-Id: Ib3c5d4743b1ac7f65a480a88613267ec0b4b7c2b
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index e4d5798..74638bb 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -21,6 +21,7 @@
namespace redfish
{
+
static std::unique_ptr<sdbusplus::bus::match::match> fwUpdateMatcher;
class UpdateService : public Node
@@ -233,15 +234,13 @@
&connections = obj.second;
// if can't parse fw id then return
- std::size_t idPos = obj.first.rfind("/");
- if (idPos == std::string::npos ||
- idPos + 1 == obj.first.size())
+ std::size_t idPos;
+ if ((idPos = obj.first.rfind("/")) == std::string::npos)
{
messages::internalError(asyncResp->res);
BMCWEB_LOG_DEBUG << "Can't parse firmware ID!!";
return;
}
-
std::string swId = obj.first.substr(idPos + 1);
for (auto &conn : connections)