INSHD.MAC;4/-AU/-BF=INSHD.MAC;3 \ -2,2 .IDENT /03X/ ; JGD02 -23,23 ; VERSION: 03X ; JGD02 -36 ; JGD02 5/29/77 CHECKS PRIVLEGE MASK WORD TO SEE IF USER ; JGD02 ; (NON PRIVLEGED) IS ALLOWED TO A)RUN TASKS OR ; JGD02 ; B)RUN TASKS ONLY OWNED BY HIS UIC. ; JGD02 ; THE EXCEPTION TO THIS IS THAT ANY TASK BUILT WITH ; JGD02 ; A UIC=[377,377] MAY BE RUN BY ANY USER. ; JGD02 ; HOWEVER, SYSTEM AND REAL TIME TASKS(THOSE ; JGD02 ; BUILT WITH TKB) WITH UIC'S OTHER THAN [377,377] ARE ; JGD02 ; ONLY RUNNABLE(FOR THOSE WITH BIT 2 IN U.CW3 SET) ; JGD02 ; IF THE TASK DEFAULT UIC MATCHES THEIR UIC ; JGD02 ; ; JGD02 -54 .SBTTL VARIABLES PRVMSK: .WORD 0 ; PRIVELEGE ACCESS MASK ; JGD02 LUIC: .WORD 0 ; UIC OF FILE OWNER(LOGON UIC) ; JGD02 -58 ERR4: .ASCIZ <15>/INS -- PRIVILEGE VIOLATION - RUN COMMAND NOT ALLOWED/ ; JGD02 ERR5: .ASCIZ <15>/INS -- PRIVILEGE VIOLATION - TASK OWNERSHIP/ ; JGD02 -79 CALL PRIVCK ; CHECK RUN PRIVLEDGES ; JGD02 -264 ;+ ; JGD02 ; *** - PRIVCK - CHECK U.CW3 IN THE TERMINALS UCB TO SEE WHICH(IF ANY) ; JGD02 ; RUN PRIVLEGES ARE ALLOWED. AT PRESENT TWO FLAVORS ; JGD02 ; EXIST AND ARE DEFINED BY BITS IN PRVMSK. ; JGD02 ; ; JGD02 ; DEFINITION OF PRVMSK, THE ACCESS RIGHTS PRIVLEDGE MASK ; JGD02 ; ; JGD02 ; BIT 00 ALL RUN PRIVLEGES ARE DENIED ; JGD02 ; ; JGD02 ; BIT 01 RUN PRIVLEGES ARE ALLOWED IF AND ONLY IF THE DEFAULT PROTECTION ; JGD02 ; UIC DEFINED BY U.LUIC IN THE TERMINAL UIC, IS EQUAL TO THE ; JGD02 ; DEFAULT TASK UIC(H.DUIC) WHICH IS SET EITHER BY THE UIC OPTION ; JGD02 ; AT TASK BUILD(BIGTKB) OR SET TO THE TERMINAL'S U.LUIC AT TASK- ; JGD02 ; BUILD(AS BY FTB) IF THE UIC OPTION OMITTED ; JGD02 ; ; JGD02 ; BIT 02 IMMEDIATELY ACTIVATE TASK ...XXX UPON EXIT FROM HELLO. THIS ; JGD02 ; ALLOWS FOR USERS TO BE PERMANTLY SLAVED TO CLI'S OTHER THAN MCR ; JGD02 ; ; JGD02 ; BIT 15 IF SET, SET TERMINAL PRIVLEGED REGARDLESS OF UIC ; JGD02 ; ; JGD02 ; THE FUNCTION OF THIS IS SUBROUTINE IS EITHER TO VERIFY THAT THERE IS NO ; JGD02 ; PRIVLEGE VIOLATION IF THE TASK IS RUN, OR TO PRINT A WARNING ERROR ; JGD02 ; MESSAGE AND EXIT FROM INSTALL ; JGD02 ; ; JGD02 ; R4 - IS ONLY REGISTER USED AND DOESN'T INTERFERE WITH NON-MODIFIED ; JGD02 ; INSHD CODE ; JGD02 ;- ; JGD02 ; JGD02 PRIVCK: MOV $TKTCB,R4 ; GET TCB ADRESS ; JGD02 MOV T.UCB(R4),R4 ; GET TERMINAL'S UCB ADDRESS ; JGD02 MOV U.CW3(R4),PRVMSK ; GET TERMINALS PRIVLEDGE MASK ; JGD02 TST PRVMSK ; IF NO MASK BITS ARE SET - ; JGD02 BEQ 40$ ; THEN RETURN TO MAINLINE CODE AT ONCE ; JGD02 BIT #1,PRVMSK ; SEE IF ANY RUN PRIVLEDGES ALLOWED ; JGD02 BEQ 20$ ; EQUAL TO ZERO SO SOMETHING IS ALLOWED ; JGD02 ; BRANCH AROUND TO 20$ TO SEE WHAT ; JGD02 MOV #ERR4,R0 ; BIT #1 IS SET, SO NO RUN COMMANDS ARE ALLOWED ; JGD02 JMP INSHDE ; THIS USER. PRINT ERROR MESSAGE AND EXIT ; JGD02 20$: BIT #2,PRVMSK ; ANYTHING MORE TO CHECK FOR ; JGD02 BEQ 40$ ; BIT 2 IS NOT SET SO RETURN TO MAINLINE CODE ; JGD02 MOV U.LUIC(R4),LUIC ; SAVE PROTECTION UIC WORD ; JGD02 MOV #$HDRBF,R4 ; GET HEADER BLOCK ADRESS ; JGD02 CMP H.DUIC(R4),LUIC ; ARE THE DEFAULT AND PROTECTION UIC THE SAME ; JGD02 BEQ 40$ ; YES, THEN RETURN ; JGD02 CMP #177777,H.DUIC(R4) ; WAS THE TASK BUILT TO BE RUNNABLE BY ; JGD02 ; EVERYONE ; JGD02 BEQ 40$ ; YES, THEN RETURN ; JGD02 CMP #100200,H.DUIC(R4) ; WAS THE TASK BUILT WITH FTB USING THE ; JGD02 ; DEFAULT UIC =[200,200] ; JGD02 ; THIS WAS FROM BEFORE THE PATCH TO FTB TO ; JGD02 ; FIX THE H.DUIC TO THE TERMINAL UIC ; JGD02 BEQ 40$ ; IF YES, THEN RETURN ; JGDOD MOV #ERR5,R0 ; NO, THE USER MAY NOT RUN THIS TASK, WARN HIM ; JGD02 JMP INSHDE ; PRINT ERROR MESSAGE, AND EXIT ; JGD02 40$: RETURN ; RETURN ; JGD02 ; ; JGD02 ; ; JGD02 /