Skip to content

Commit 47aaf3b

Browse files
authored
[dash] fix DASH ACL Rule protocol use-after-free (sonic-net#2958)
[dash] Updated the code to avoid using the vector (protocols) that goes out of scope before its data is used
1 parent 56ac8b9 commit 47aaf3b

1 file changed

Lines changed: 8 additions & 10 deletions

File tree

orchagent/dash/dashaclgroupmgr.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -378,18 +378,16 @@ void DashAclGroupMgr::createRule(DashAclGroup& group, DashAclRule& rule)
378378
attrs.emplace_back();
379379
attrs.back().id = SAI_DASH_ACL_RULE_ATTR_PROTOCOL;
380380

381-
if (rule.m_protocols.size())
382-
{
383-
attrs.back().value.u8list.count = static_cast<uint32_t>(rule.m_protocols.size());
384-
attrs.back().value.u8list.list = rule.m_protocols.data();
385-
}
386-
else
387-
{
388-
auto protocols = all_protocols;
389-
attrs.back().value.u8list.count = static_cast<uint32_t>(protocols.size());
390-
attrs.back().value.u8list.list = protocols.data();
381+
vector<uint8_t> protocols;
382+
if (rule.m_protocols.size()) {
383+
protocols = rule.m_protocols;
384+
} else {
385+
protocols = all_protocols;
391386
}
392387

388+
attrs.back().value.u8list.count = static_cast<uint32_t>(protocols.size());
389+
attrs.back().value.u8list.list = protocols.data();
390+
393391
if (!rule.m_src_prefixes.empty())
394392
{
395393
src_prefixes.insert(src_prefixes.end(),

0 commit comments

Comments
 (0)