Changeset 1484

Show
Ignore:
Timestamp:
02/16/07 15:54:21 (2 years ago)
Author:
bwilliams
Message:

Fix to allow basedomains to not break encapulation rules in policy

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/framework-plugin/src/com/tresys/framework/compiler/translator/Translator.java

    r1459 r1484  
    159159                        if(dom instanceof Domain) { 
    160160                                makeDomain((Domain) dom, stream); 
    161                                 TranslateAccesses((Domain)dom, stream); 
    162161                        } else if(dom instanceof UserDomain) { 
    163162                                makeUserDomain((UserDomain) dom, stream); 
    164163                        } 
     164                        if(dom instanceof BaseDomain) { 
     165                                stream.print("optional_policy(`\n" +  
     166                                                         "\tgen_require(`\n" +  
     167                                                         "\t\ttype " + ((BaseDomain) dom).getType() + ";\n" +  
     168                                                         "\t\trole " + ((BaseDomain) dom).GetRole() + ";\n" +  
     169                                                         "\t')\n"); 
     170                        } 
     171                        TranslateAccesses(dom, stream); 
    165172                        TranslateEntries(dom, stream); 
     173                        if(dom instanceof BaseDomain) { 
     174                                stream.print("\n')\n"); 
     175                        } 
    166176                } 
    167177 
     
    243253         
    244254         
    245         private void TranslateAccesses(Domain dom, PrintStream stream) { 
     255        private void TranslateAccesses(IDomain dom, PrintStream stream) { 
    246256                Iterator iter = dom.GetAccesses().iterator(); 
    247257                while(iter.hasNext()) { 
     
    11691179        private void PropogateRole(IDomain endDomain, String role) { 
    11701180                List entries = endDomain.GetEntries(); 
    1171                 boolean newRole = roleRules.add("role " + role + " types " 
    1172                         + endDomain.getType() + ";"); 
     1181                String rule = "optional_policy(`\ngen_require(`\n\trole " + role + ";\n"; 
     1182                if(endDomain instanceof BaseDomain) 
     1183                                rule += "\ttype "+ endDomain.getType() + ";\n)"; 
     1184                rule += "')\n" + " role " + role + " types " 
     1185                + endDomain.getType() + ";\n')\n"; 
     1186                boolean newRole = roleRules.add(rule); 
    11731187                if(newRole) { 
    11741188                        Iterator itr = entries.iterator();