struct smack_known *kp;
char *sp;
int found = 0;
- int acat;
- int kcat;
if ((sap->flags & NETLBL_SECATTR_MLS_LVL) != 0) {
/*
list_for_each_entry(kp, &smack_known_list, list) {
if (sap->attr.mls.lvl != kp->smk_netlabel.attr.mls.lvl)
continue;
- /*
- * Compare the catsets. Use the netlbl APIs.
- */
- if ((sap->flags & NETLBL_SECATTR_MLS_CAT) == 0) {
- if ((kp->smk_netlabel.flags &
- NETLBL_SECATTR_MLS_CAT) == 0)
- found = 1;
- break;
- }
- for (acat = -1, kcat = -1; acat == kcat; ) {
- acat = netlbl_secattr_catmap_walk(
- sap->attr.mls.cat, acat + 1);
- kcat = netlbl_secattr_catmap_walk(
- kp->smk_netlabel.attr.mls.cat,
- kcat + 1);
- if (acat < 0 || kcat < 0)
- break;
- }
- if (acat == kcat) {
- found = 1;
- break;
- }
+ if (memcmp(sap->attr.mls.cat,
+ kp->smk_netlabel.attr.mls.cat,
+ SMK_CIPSOLEN) != 0)
+ continue;
+ found = 1;
+ break;
}
rcu_read_unlock();