COMPILATION LISTING OF SEGMENT convert_MR10_2_audit_flags_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/22/85 1431.1 mst Tue Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 /* format: style1,^inddcls,^indnoniterdo,insnl,linecom,indcomtxt */ 8 9 convert_MR10_2_audit_flags_: 10 procedure (a_flags); 11 12 /* format: off */ 13 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 /* */ 15 /* CONVERT_MR10_2_AUDIT_FLAGS_ */ 16 /* */ 17 /* Routine to convert a set of audit flags from pre-MR11 format to MR11 format. */ 18 /* */ 19 /* RESET_MR10_2_AUDIT_FLAGS_ */ 20 /* */ 21 /* Routine to attempt backing-out the changes made by convert_MR10_2_audit_flags_. (It */ 22 /* is not possible to obtain exactly the original flags). */ 23 /* */ 24 /* Last Modified: */ 25 /* 1984-12-10 EJ Sharpe - initial coding */ 26 /* */ 27 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 /* format: on */ 29 30 31 dcl a_flags bit (36) aligned parameter; 32 dcl 1 new_flags aligned like audit_flags; 33 dcl 1 old_flags aligned like OLD_audit_flags; 34 35 dcl string builtin; 36 dcl unspec builtin; 37 38 39 /* pre-MR11 flag definition */ 40 41 dcl 1 OLD_audit_flags aligned based, /* These flags control which auditable protection 42* events do in fact produce audit entries in 43* the syserr or other logs for this process */ 44 2 ring_0_flags unaligned, /* Flags checked by ring 0 */ 45 ( 3 protected_seg_init, /* ON => audit initiations of non-directory 46* segments with non-null access class 47* (not including ring 1 multi-class segments) */ 48 3 protected_dir_init, /* ON => audit making known of directories 49* with non-null access class */ 50 3 r1_multi_class_init, /* ON => audit initiaions of ring 1 multi-class 51* segments. (This flag is OFF when ring 1 52* is doing its own auditing) */ 53 3 access_denied, /* ON => audit instances of access denied 54* to segments or directories due to improper 55* authorization, ACL mode, or ring validation level */ 56 3 illegal_proc, /* ON => audit illegal procedure faults 57* (except legal EIS faults) */ 58 3 access_viol_mode, /* ON => audit ACL mode related 59* access violation faults */ 60 3 access_viol_ring, /* ON => audit ring related 61* access violation faults */ 62 3 wakeup_denied, /* ON => audit unsuccessful attempts to send 63* IPC messages due to improper authorization */ 64 3 sys_privilege, /* ON => audit changing of special privileges 65* (including setting of system privilege bits, 66* privileged initiations) */ 67 3 SSA_ops, /* ON => audit SSA downgrade, turning 68* security-oos off, other security related operations */ 69 3 attach_denied, /* ON => audit denied attachment of devices 70* (disk and tape drives) in ring 0 */ 71 3 pad (7) 72 ) bit (1), /* Reserved for expansion of ring 0 73* audit selectivity */ 74 75 2 ring_1_flags unaligned, /* Flags checked by ring 1 */ 76 ( 3 mount_denied, /* ON => audit instances of denied 77* mounts of media (disk and tape) */ 78 3 mseg_events, /* ON => audit protection events concerning 79* message segments (overflows) */ 80 3 comm_events, /* ON => audit use of communications AIM privilege */ 81 3 pad (15) 82 ) bit (1); /* Reserved for expansion of ring 1 83* audit selectivity */ 84 85 /* MR11 audit flag definition */ 86 1 1 /* begin include file - access_audit_flags.incl.pl1 */ 1 2 1 3 /* NOTE: All changes must be done also to access_audit_flags.incl.alm !!!!!! */ 1 4 1 5 /* Modified 85-01-14 by EJ Sharpe for n_audit_access_types, constants for 1 6* indexing into flags array */ 1 7 /* Modified 85-01-07 by EJ Sharpe for cleanup */ 1 8 /* Modified 84-11-16 by EJ Sharpe to add alternate dcl */ 1 9 1 10 /* The following structure describes the per-process audit 1 11*data which determines which events must be audited. */ 1 12 1 13 dcl 1 audit_flags based aligned, 1 14 2 objects (6) unal, /* n_audit_objects */ 1 15 3 grant_level fixed bin (2) uns unal, 1 16 3 deny_level fixed bin (2) uns unal, 1 17 2 pad bit (7) unal, 1 18 2 admin_ops bit (1) unal, 1 19 2 priv_ops bit (1) unal, 1 20 2 faults bit (1) unal, 1 21 2 cc_1_10 bit (1) unal, /* small channel */ 1 22 2 cc_10_100 bit (1) unal; /* moderate channel */ 1 23 1 24 dcl 1 audit_flags_alt based aligned, 1 25 2 objects (6) unal, /* n_audit_objects */ 1 26 3 grant_level fixed bin (2) uns unal, 1 27 3 deny_level fixed bin (2) uns unal, 1 28 2 pad bit (7) unal, 1 29 2 flags (5) bit (1) unal /* n_audit_flags */; 1 30 1 31 dcl n_audit_objects init (6) 1 32 fixed bin int static options (constant); 1 33 dcl n_audit_flags init (5) 1 34 fixed bin int static options (constant); 1 35 dcl n_audit_access_types init (3) 1 36 fixed bin int static options (constant); 1 37 1 38 /* constants for indexing into the "objects" array */ 1 39 dcl ( 1 40 FSOBJ_AUDIT_OBJECT_INDEX init (1), 1 41 FSATTR_AUDIT_OBJECT_INDEX init (2), 1 42 RCP_AUDIT_OBJECT_INDEX init (3), 1 43 ADMIN_AUDIT_OBJECT_INDEX init (4), 1 44 SPECIAL_AUDIT_OBJECT_INDEX init (5), 1 45 OTHER_AUDIT_OBJECT_INDEX init (6) 1 46 ) fixed bin int static options (constant); 1 47 1 48 /* constants for indexing into the flags array (in the alternate dcl) */ 1 49 dcl ( 1 50 ADMIN_OP_AUDIT_FLAG_INDEX init (1), 1 51 PRIV_OP_AUDIT_FLAG_INDEX init (2), 1 52 FAULTS_AUDIT_FLAG_INDEX init (3), 1 53 CC_1_10_AUDIT_FLAG_INDEX init (4), 1 54 CC_10_100_AUDIT_FLAG_INDEX init (5) 1 55 ) fixed bin int static options (constant); 1 56 1 57 /* constants which define the meaning of the level values / access types */ 1 58 dcl ( 1 59 NONE init (0), 1 60 MODIFY_ACCESS init (1), 1 61 MODIFY init (2), 1 62 READ init (3) 1 63 ) fixed bin (2) uns int static options (constant); 1 64 1 65 /* Note: "MODIFY" implies "MODIFY_ACCESS" as well; 1 66* "READ" implies "MODIFY" and "MODIFY_ACCESS" as well */ 1 67 1 68 /* Note: The size of the metering data in active_hardcore_data is 1 69* dependant upon the number of audit flags and objects. 1 70* Specifically, the number of metering buckets is: 1 71* n_audit_objects*2*n_audit_access_types+n_audit_flags+1 1 72* (the extra "1" is for debugging purposes) */ 1 73 1 74 /* end include file - access_audit_flags.incl.pl1 */ 87 88 89 90 string (old_flags) = a_flags; 91 unspec (new_flags) = ""b; 92 93 /**** 94* We really should check the input flags for validity, however, 95* we also want badly to succeed. Thus, we'll just ignore 96* any garbage in the pad fields: 97* if string(old_flags.ring_0_flags.pad) ^= ""b 98* | string(old_flags.ring_1_flags.pad) ^= ""b 99* then grin_and_bear_it; 100**/ 101 102 if old_flags.protected_seg_init 103 | old_flags.protected_dir_init 104 | old_flags.r1_multi_class_init 105 | old_flags.access_denied 106 then new_flags.objects (FSOBJ_AUDIT_OBJECT_INDEX).deny_level = READ; 107 108 if old_flags.access_denied 109 then new_flags.objects (FSATTR_AUDIT_OBJECT_INDEX).deny_level = READ; 110 111 if old_flags.illegal_proc 112 | old_flags.access_viol_mode 113 | old_flags.access_viol_ring 114 then new_flags.faults = "1"b; 115 116 if old_flags.wakeup_denied 117 then new_flags.objects (SPECIAL_AUDIT_OBJECT_INDEX).deny_level = MODIFY; 118 119 if old_flags.sys_privilege 120 then new_flags.priv_ops = "1"b; 121 122 if old_flags.SSA_ops 123 then new_flags.admin_ops = "1"b; 124 125 if old_flags.attach_denied 126 | old_flags.mount_denied 127 then new_flags.objects (RCP_AUDIT_OBJECT_INDEX).deny_level = READ; 128 129 if old_flags.mseg_events 130 | old_flags.comm_events 131 then new_flags.objects (OTHER_AUDIT_OBJECT_INDEX).deny_level = READ; 132 133 a_flags = unspec (new_flags); 134 135 return; 136 137 138 /* RESET_MR10_2_AUDIT_FLAGS_ - entry to convert MR11 flags back to pre-MR11 format */ 139 140 reset_MR10_2_audit_flags_: 141 entry (a_flags); 142 143 string (old_flags) = ""b; 144 unspec (new_flags) = a_flags; 145 146 /**** 147* We really should check the input flags for validity, however, 148* we also want badly to succeed. Thus, we'll just ignore 149* any illegal values: 150* if new_flags.pad ^= ""b 151* | new_flags.objects(FSOBJ_AUDIT_OBJECT_INDEX).grant_level = MODIFY_ACCESS 152* | new_flags.objects(FSOBJ_AUDIT_OBJECT_INDEX).deny_level = MODIFY_ACCESS 153* then grin_and_bear_it; 154**/ 155 156 if new_flags.objects (FSOBJ_AUDIT_OBJECT_INDEX).deny_level ^= NONE 157 then old_flags.protected_seg_init, 158 old_flags.protected_dir_init, 159 old_flags.r1_multi_class_init, 160 old_flags.access_denied = "1"b; 161 162 if new_flags.objects (FSATTR_AUDIT_OBJECT_INDEX).deny_level ^= NONE 163 then old_flags.access_denied = "1"b; 164 165 if new_flags.faults 166 then old_flags.illegal_proc, 167 old_flags.access_viol_mode, 168 old_flags.access_viol_ring = "1"b; 169 170 if new_flags.objects (SPECIAL_AUDIT_OBJECT_INDEX).deny_level > MODIFY_ACCESS 171 then old_flags.wakeup_denied = "1"b; 172 173 if new_flags.priv_ops 174 then old_flags.sys_privilege = "1"b; 175 176 if new_flags.admin_ops 177 then old_flags.SSA_ops = "1"b; 178 179 if new_flags.objects (RCP_AUDIT_OBJECT_INDEX).deny_level ^= NONE 180 then old_flags.attach_denied, 181 old_flags.mount_denied = "1"b; 182 183 if new_flags.objects (OTHER_AUDIT_OBJECT_INDEX).deny_level ^= NONE 184 then old_flags.mseg_events, 185 old_flags.comm_events = "1"b; 186 187 a_flags = string (old_flags); 188 189 return; 190 191 192 end convert_MR10_2_audit_flags_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/22/85 1240.5 convert_MR10_2_audit_flags_.pl1 >spec>temp>41-5>convert_MR10_2_audit_flags_.pl1 87 1 01/22/85 1321.6 access_audit_flags.incl.pl1 >spec>temp>41-5>access_audit_flags.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. FSATTR_AUDIT_OBJECT_INDEX constant fixed bin(17,0) initial dcl 1-39 ref 108 162 FSOBJ_AUDIT_OBJECT_INDEX constant fixed bin(17,0) initial dcl 1-39 ref 102 156 MODIFY constant fixed bin(2,0) initial unsigned dcl 1-58 ref 116 MODIFY_ACCESS constant fixed bin(2,0) initial unsigned dcl 1-58 ref 170 NONE constant fixed bin(2,0) initial unsigned dcl 1-58 ref 156 162 179 183 OLD_audit_flags based structure level 1 dcl 41 OTHER_AUDIT_OBJECT_INDEX constant fixed bin(17,0) initial dcl 1-39 ref 129 183 RCP_AUDIT_OBJECT_INDEX constant fixed bin(17,0) initial dcl 1-39 ref 125 179 READ constant fixed bin(2,0) initial unsigned dcl 1-58 ref 102 108 125 129 SPECIAL_AUDIT_OBJECT_INDEX constant fixed bin(17,0) initial dcl 1-39 ref 116 170 SSA_ops 0(09) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 122 176* a_flags parameter bit(36) dcl 31 set ref 9 90 133* 140 144 187* access_denied 0(03) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 102 108 156* 162* access_viol_mode 0(05) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 111 165* access_viol_ring 0(06) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 111 165* admin_ops 0(31) 000100 automatic bit(1) level 2 packed unaligned dcl 32 set ref 122* 176 attach_denied 0(10) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 125 179* audit_flags based structure level 1 dcl 1-13 comm_events 0(20) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 129 183* deny_level 0(02) 000100 automatic fixed bin(2,0) array level 3 packed unsigned unaligned dcl 32 set ref 102* 108* 116* 125* 129* 156 162 170 179 183 faults 0(33) 000100 automatic bit(1) level 2 packed unaligned dcl 32 set ref 111* 165 illegal_proc 0(04) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 111 165* mount_denied 0(18) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 125 179* mseg_events 0(19) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 129 183* new_flags 000100 automatic structure level 1 dcl 32 set ref 91* 133 144* objects 000100 automatic structure array level 2 packed unaligned dcl 32 old_flags 000101 automatic structure level 1 dcl 33 set ref 90* 143* 187 priv_ops 0(32) 000100 automatic bit(1) level 2 packed unaligned dcl 32 set ref 119* 173 protected_dir_init 0(01) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 102 156* protected_seg_init 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 102 156* r1_multi_class_init 0(02) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 102 156* ring_0_flags 000101 automatic structure level 2 packed unaligned dcl 33 ring_1_flags 0(18) 000101 automatic structure level 2 packed unaligned dcl 33 string builtin function dcl 35 set ref 90* 143* 187 sys_privilege 0(08) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 119 173* unspec builtin function dcl 36 set ref 91* 133 144* wakeup_denied 0(07) 000101 automatic bit(1) level 3 packed unaligned dcl 33 set ref 116 170* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ADMIN_AUDIT_OBJECT_INDEX internal static fixed bin(17,0) initial dcl 1-39 ADMIN_OP_AUDIT_FLAG_INDEX internal static fixed bin(17,0) initial dcl 1-49 CC_10_100_AUDIT_FLAG_INDEX internal static fixed bin(17,0) initial dcl 1-49 CC_1_10_AUDIT_FLAG_INDEX internal static fixed bin(17,0) initial dcl 1-49 FAULTS_AUDIT_FLAG_INDEX internal static fixed bin(17,0) initial dcl 1-49 PRIV_OP_AUDIT_FLAG_INDEX internal static fixed bin(17,0) initial dcl 1-49 audit_flags_alt based structure level 1 dcl 1-24 n_audit_access_types internal static fixed bin(17,0) initial dcl 1-35 n_audit_flags internal static fixed bin(17,0) initial dcl 1-33 n_audit_objects internal static fixed bin(17,0) initial dcl 1-31 NAMES DECLARED BY EXPLICIT CONTEXT. convert_MR10_2_audit_flags_ 000004 constant entry external dcl 9 reset_MR10_2_audit_flags_ 000110 constant entry external dcl 140 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 304 314 242 314 Length 506 242 10 155 42 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME convert_MR10_2_audit_flags_ 67 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME convert_MR10_2_audit_flags_ 000100 new_flags convert_MR10_2_audit_flags_ 000101 old_flags convert_MR10_2_audit_flags_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return ext_entry NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. CONSTANTS 000237 aa 000200400000 000240 aa 400000000000 000241 aa 600000000000 000000 aa 514000000044 BEGIN PROCEDURE convert_MR10_2_audit_flags_ ENTRY TO convert_MR10_2_audit_flags_ STATEMENT 1 ON LINE 9 convert_MR10_2_audit_flags_: procedure (a_flags); 000001 at 000001000000 000002 ta 000001000000 000003 da 000024300000 000004 aa 000120 6270 00 eax7 80 000005 aa 7 00034 3521 20 epp2 pr7|28,* 000006 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000007 aa 000002000000 000010 aa 000000000000 STATEMENT 1 ON LINE 90 string (old_flags) = a_flags; 000011 aa 6 00032 3735 20 epp7 pr6|26,* 000012 aa 7 00002 2351 20 lda pr7|2,* a_flags 000013 aa 6 00101 7551 00 sta pr6|65 STATEMENT 1 ON LINE 91 unspec (new_flags) = ""b; 000014 aa 6 00100 4501 00 stz pr6|64 STATEMENT 1 ON LINE 102 if old_flags.protected_seg_init | old_flags.protected_dir_init | old_flags.r1_multi_class_init | old_flags.access_denied then new_flags.objects (FSOBJ_AUDIT_OBJECT_INDEX).deny_level = READ; 000015 aa 6 00101 2351 00 lda pr6|65 old_flags.access_denied 000016 aa 000003 7350 00 als 3 000017 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 000020 aa 6 00102 7551 00 sta pr6|66 old_flags.access_denied 000021 aa 000004 6010 04 tnz 4,ic 000025 000022 aa 6 00101 2351 00 lda pr6|65 old_flags.r1_multi_class_init 000023 aa 700000 3150 03 cana 229376,du 000024 aa 000005 6000 04 tze 5,ic 000031 000025 aa 000004 2360 07 ldq 4,dl 000026 aa 003 106 060 404 csl (ic),(pr,ql),fill(0),bool(move) 000027 aa 000213 00 0002 descb 139,2 000241 = 600000000000 000030 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level STATEMENT 1 ON LINE 108 if old_flags.access_denied then new_flags.objects (FSATTR_AUDIT_OBJECT_INDEX).deny_level = READ; 000031 aa 6 00102 2351 00 lda pr6|66 old_flags.access_denied 000032 aa 000005 6000 04 tze 5,ic 000037 000033 aa 000010 2360 07 ldq 8,dl 000034 aa 003 106 060 404 csl (ic),(pr,ql),fill(0),bool(move) 000035 aa 000205 00 0002 descb 133,2 000241 = 600000000000 000036 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level STATEMENT 1 ON LINE 111 if old_flags.illegal_proc | old_flags.access_viol_mode | old_flags.access_viol_ring then new_flags.faults = "1"b; 000037 aa 6 00101 2351 00 lda pr6|65 old_flags.access_viol_ring 000040 aa 034000 3150 03 cana 14336,du 000041 aa 000003 6000 04 tze 3,ic 000044 000042 aa 000004 2350 07 lda 4,dl 000043 aa 6 00100 2551 00 orsa pr6|64 new_flags.faults STATEMENT 1 ON LINE 116 if old_flags.wakeup_denied then new_flags.objects (SPECIAL_AUDIT_OBJECT_INDEX).deny_level = MODIFY; 000044 aa 6 00101 2351 00 lda pr6|65 old_flags.wakeup_denied 000045 aa 002000 3150 03 cana 1024,du 000046 aa 000005 6000 04 tze 5,ic 000053 000047 aa 000024 2360 07 ldq 20,dl 000050 aa 003 106 060 404 csl (ic),(pr,ql),fill(0),bool(move) 000051 aa 000170 00 0002 descb 120,2 000240 = 400000000000 000052 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level STATEMENT 1 ON LINE 119 if old_flags.sys_privilege then new_flags.priv_ops = "1"b; 000053 aa 6 00101 2351 00 lda pr6|65 old_flags.sys_privilege 000054 aa 001000 3150 03 cana 512,du 000055 aa 000003 6000 04 tze 3,ic 000060 000056 aa 000010 2350 07 lda 8,dl 000057 aa 6 00100 2551 00 orsa pr6|64 new_flags.priv_ops STATEMENT 1 ON LINE 122 if old_flags.SSA_ops then new_flags.admin_ops = "1"b; 000060 aa 6 00101 2351 00 lda pr6|65 old_flags.SSA_ops 000061 aa 000400 3150 03 cana 256,du 000062 aa 000003 6000 04 tze 3,ic 000065 000063 aa 000020 2350 07 lda 16,dl 000064 aa 6 00100 2551 00 orsa pr6|64 new_flags.admin_ops STATEMENT 1 ON LINE 125 if old_flags.attach_denied | old_flags.mount_denied then new_flags.objects (RCP_AUDIT_OBJECT_INDEX).deny_level = READ; 000065 aa 6 00101 2351 00 lda pr6|65 old_flags.mount_denied 000066 aa 000151 3150 04 cana 105,ic 000237 = 000200400000 000067 aa 000005 6000 04 tze 5,ic 000074 000070 aa 000014 2360 07 ldq 12,dl 000071 aa 003 106 060 404 csl (ic),(pr,ql),fill(0),bool(move) 000072 aa 000150 00 0002 descb 104,2 000241 = 600000000000 000073 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level STATEMENT 1 ON LINE 129 if old_flags.mseg_events | old_flags.comm_events then new_flags.objects (OTHER_AUDIT_OBJECT_INDEX).deny_level = READ; 000074 aa 6 00101 2351 00 lda pr6|65 old_flags.comm_events 000075 aa 300000 3150 07 cana 98304,dl 000076 aa 000005 6000 04 tze 5,ic 000103 000077 aa 000030 2360 07 ldq 24,dl 000100 aa 003 106 060 404 csl (ic),(pr,ql),fill(0),bool(move) 000101 aa 000141 00 0002 descb 97,2 000241 = 600000000000 000102 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level STATEMENT 1 ON LINE 133 a_flags = unspec (new_flags); 000103 aa 6 00100 2351 00 lda pr6|64 000104 aa 7 00002 7551 20 sta pr7|2,* a_flags STATEMENT 1 ON LINE 135 return; 000105 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO reset_MR10_2_audit_flags_ STATEMENT 1 ON LINE 140 reset_MR10_2_audit_flags_: entry (a_flags); 000106 ta 000001000000 000107 da 000036300000 000110 aa 000120 6270 00 eax7 80 000111 aa 7 00034 3521 20 epp2 pr7|28,* 000112 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000113 aa 000002000000 000114 aa 000000000000 STATEMENT 1 ON LINE 143 string (old_flags) = ""b; 000115 aa 6 00101 4501 00 stz pr6|65 STATEMENT 1 ON LINE 144 unspec (new_flags) = a_flags; 000116 aa 6 00032 3735 20 epp7 pr6|26,* 000117 aa 7 00002 2351 20 lda pr7|2,* a_flags 000120 aa 6 00100 7551 00 sta pr6|64 STATEMENT 1 ON LINE 156 if new_flags.objects (FSOBJ_AUDIT_OBJECT_INDEX).deny_level ^= NONE then old_flags.protected_seg_init, old_flags.protected_dir_init, old_flags.r1_multi_class_init, old_flags.access_denied = "1"b; 000121 aa 000004 2360 07 ldq 4,dl 000122 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 000123 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level 000124 aa 6 00056 00 0044 descb pr6|46,36 000125 aa 6 00056 2351 00 lda pr6|46 000126 aa 000106 7730 00 lrl 70 000127 aa 000011 6000 04 tze 9,ic 000140 000130 aa 400000 2350 03 lda 131072,du 000131 aa 6 00101 2551 00 orsa pr6|65 old_flags.protected_seg_init 000132 aa 200000 2350 03 lda 65536,du 000133 aa 6 00101 2551 00 orsa pr6|65 old_flags.protected_dir_init 000134 aa 100000 2350 03 lda 32768,du 000135 aa 6 00101 2551 00 orsa pr6|65 old_flags.r1_multi_class_init 000136 aa 040000 2350 03 lda 16384,du 000137 aa 6 00101 2551 00 orsa pr6|65 old_flags.access_denied STATEMENT 1 ON LINE 162 if new_flags.objects (FSATTR_AUDIT_OBJECT_INDEX).deny_level ^= NONE then old_flags.access_denied = "1"b; 000140 aa 000010 2360 07 ldq 8,dl 000141 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 000142 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level 000143 aa 6 00056 00 0044 descb pr6|46,36 000144 aa 6 00056 2351 00 lda pr6|46 000145 aa 000106 7730 00 lrl 70 000146 aa 000003 6000 04 tze 3,ic 000151 000147 aa 040000 2350 03 lda 16384,du 000150 aa 6 00101 2551 00 orsa pr6|65 old_flags.access_denied STATEMENT 1 ON LINE 165 if new_flags.faults then old_flags.illegal_proc, old_flags.access_viol_mode, old_flags.access_viol_ring = "1"b; 000151 aa 6 00100 2351 00 lda pr6|64 new_flags.faults 000152 aa 000004 3150 07 cana 4,dl 000153 aa 000007 6000 04 tze 7,ic 000162 000154 aa 020000 2350 03 lda 8192,du 000155 aa 6 00101 2551 00 orsa pr6|65 old_flags.illegal_proc 000156 aa 010000 2350 03 lda 4096,du 000157 aa 6 00101 2551 00 orsa pr6|65 old_flags.access_viol_mode 000160 aa 004000 2350 03 lda 2048,du 000161 aa 6 00101 2551 00 orsa pr6|65 old_flags.access_viol_ring STATEMENT 1 ON LINE 170 if new_flags.objects (SPECIAL_AUDIT_OBJECT_INDEX).deny_level > MODIFY_ACCESS then old_flags.wakeup_denied = "1"b; 000162 aa 000024 2360 07 ldq 20,dl 000163 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 000164 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level 000165 aa 6 00056 00 0044 descb pr6|46,36 000166 aa 6 00056 2351 00 lda pr6|46 000167 aa 000106 7730 00 lrl 70 000170 aa 000001 1160 07 cmpq 1,dl 000171 aa 000003 6044 04 tmoz 3,ic 000174 000172 aa 002000 2350 03 lda 1024,du 000173 aa 6 00101 2551 00 orsa pr6|65 old_flags.wakeup_denied STATEMENT 1 ON LINE 173 if new_flags.priv_ops then old_flags.sys_privilege = "1"b; 000174 aa 6 00100 2351 00 lda pr6|64 new_flags.priv_ops 000175 aa 000010 3150 07 cana 8,dl 000176 aa 000003 6000 04 tze 3,ic 000201 000177 aa 001000 2350 03 lda 512,du 000200 aa 6 00101 2551 00 orsa pr6|65 old_flags.sys_privilege STATEMENT 1 ON LINE 176 if new_flags.admin_ops then old_flags.SSA_ops = "1"b; 000201 aa 6 00100 2351 00 lda pr6|64 new_flags.admin_ops 000202 aa 000020 3150 07 cana 16,dl 000203 aa 000003 6000 04 tze 3,ic 000206 000204 aa 000400 2350 03 lda 256,du 000205 aa 6 00101 2551 00 orsa pr6|65 old_flags.SSA_ops STATEMENT 1 ON LINE 179 if new_flags.objects (RCP_AUDIT_OBJECT_INDEX).deny_level ^= NONE then old_flags.attach_denied, old_flags.mount_denied = "1"b; 000206 aa 000014 2360 07 ldq 12,dl 000207 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 000210 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level 000211 aa 6 00056 00 0044 descb pr6|46,36 000212 aa 6 00056 2351 00 lda pr6|46 000213 aa 000106 7730 00 lrl 70 000214 aa 000005 6000 04 tze 5,ic 000221 000215 aa 000200 2350 03 lda 128,du 000216 aa 6 00101 2551 00 orsa pr6|65 old_flags.attach_denied 000217 aa 400000 2350 07 lda 131072,dl 000220 aa 6 00101 2551 00 orsa pr6|65 old_flags.mount_denied STATEMENT 1 ON LINE 183 if new_flags.objects (OTHER_AUDIT_OBJECT_INDEX).deny_level ^= NONE then old_flags.mseg_events, old_flags.comm_events = "1"b; 000221 aa 000030 2360 07 ldq 24,dl 000222 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 000223 aa 6 00077 67 0002 descb pr6|63(34),2 new_flags.deny_level 000224 aa 6 00056 00 0044 descb pr6|46,36 000225 aa 6 00056 2351 00 lda pr6|46 000226 aa 000106 7730 00 lrl 70 000227 aa 000005 6000 04 tze 5,ic 000234 000230 aa 200000 2350 07 lda 65536,dl 000231 aa 6 00101 2551 00 orsa pr6|65 old_flags.mseg_events 000232 aa 100000 2350 07 lda 32768,dl 000233 aa 6 00101 2551 00 orsa pr6|65 old_flags.comm_events STATEMENT 1 ON LINE 187 a_flags = string (old_flags); 000234 aa 6 00101 2351 00 lda pr6|65 000235 aa 7 00002 7551 20 sta pr7|2,* a_flags STATEMENT 1 ON LINE 189 return; 000236 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 192 end convert_MR10_2_audit_flags_; END PROCEDURE convert_MR10_2_audit_flags_ ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved