mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 08:24:42 +01:00
parser: fix cmp function for network rules
The network cmp function was missing the new attributes added, causing rules to be dropped. Signed-off-by: Georgia Garcia <georgia.garcia@canonical.com>
This commit is contained in:
parent
b01b9895e7
commit
efc2ec5fdd
1 changed files with 21 additions and 1 deletions
|
@ -890,6 +890,17 @@ void network_rule::update_compat_net(void)
|
|||
}
|
||||
}
|
||||
|
||||
static int cmp_ip_conds(ip_conds const &lhs, ip_conds const &rhs)
|
||||
{
|
||||
int res = null_strcmp(lhs.sip, rhs.sip);
|
||||
if (res)
|
||||
return res;
|
||||
res = null_strcmp(lhs.sport, rhs.sport);
|
||||
if (res)
|
||||
return res;
|
||||
return lhs.is_anonymous - rhs.is_anonymous;
|
||||
}
|
||||
|
||||
static int cmp_network_map(std::unordered_map<unsigned int, std::pair<unsigned int, unsigned int>> lhs,
|
||||
std::unordered_map<unsigned int, std::pair<unsigned int, unsigned int>> rhs)
|
||||
{
|
||||
|
@ -912,5 +923,14 @@ int network_rule::cmp(rule_t const &rhs) const
|
|||
if (res)
|
||||
return res;
|
||||
network_rule const &nrhs = rule_cast<network_rule const &>(rhs);
|
||||
return cmp_network_map(network_perms, nrhs.network_perms);
|
||||
res = cmp_network_map(network_perms, nrhs.network_perms);
|
||||
if (res)
|
||||
return res;
|
||||
res = cmp_ip_conds(local, nrhs.local);
|
||||
if (res)
|
||||
return res;
|
||||
res = cmp_ip_conds(peer, nrhs.peer);
|
||||
if (res)
|
||||
return res;
|
||||
return null_strcmp(label, nrhs.label);
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue