INSHD.MAC;2/AU=INSHD.VGN;1 \ -2,5 .IDENT /04X/ ; ; COPYRIGHT (C) 1974, 1976 ; COPYRIGHT (C) 1978 -23,24 ; ; VERSION: 04X -44 ; JGD02 5/29/77 CHECKS PRIVLEGE MASK WORD TO SEE IF USER ; (NON PRIVLEGED) IS ALLOWED TO A)RUN TASKS OR ; B)RUN TASKS ONLY OWNED BY HIS UIC. ; THE EXCEPTION TO THIS IS THAT ANY TASK BUILT WITH. ; A UIC=[377,377] OR [200,200] MAY BE RUN BY ANY USER. ; HOWEVER, SYSTEM AND REAL TIME TASKS(THOSE ; BUILT WITH TKB) WITH UIC'S OTHER THAN [377,377] ARE ; ONLY RUNNABLE(FOR THOSE WITH BIT 2 IN U.PRV1 SET) ; IF THE TASK DEFAULT UIC MATCHES THEIR UIC ; ; RJDK5 SUPPORT FOR /PRM= AND /PRM=" " ; ; ; % -49,,/; JGD02/ .IFDF R$$PRV .MCALL UCBDF$ UCBDF$ .IFNDF D$$H11&D$$J11&D$$M11&D$$ZMD&D$$Z11 U.PRV1=U.CW3 ; FOR SYSTEMS WITH ONLY DL11'S .IFF U.PRV1=U.LUIC-2 ; FOR SYSTEMS WITH MULTIPLEXERS .ENDC .ENDC -61,,/; JGD02/ .IFDF R$$PRV PRVMSK: .WORD 0 ; PRIVLEGE ACCESS MASK LUIC: .WORD 0 ; UIC OF FILE OWNER(LOGON UIC) .ENDC -66,,/; JGD02/ .IFDF R$$PRV ERR4: .ASCIZ <15>/INS -- PRIVILEGE VIOLATION - RUN COMMAND NOT ALLOWED/ ERR5: .ASCIZ <15>/INS -- PRIVILEGE VIOLATION - TASK OWNERSHIP/ .ENDC .EVEN -101,,/; JGD02/ .IFDF R$$PRV CALL PRIVCK ; CHECK RUN PRIVLEDGE .ENDC -265,267,/; RJDK5/ BEQ 171$ ; NO BIS #T3.MCR,T.ST3(R0) ; YES, SET TO PROMPT ON EXIT 171$: BIT #10000,$FLGS ; PRM= SPECIFIED? BEQ 180$ ; NO MOV R0,R5 ; SAVE PTR MOV #84.,R1 ; LENGTH OF MCRBUFF CALL $ALOCB ;GET BUFFER BCS 180$ ;FORGET IF PROBLEMS MOV R0,R1 ;SAVE MCR BUF PTR TST (R1)+ ;SKIP LIST HEADER MOV R5,(R1)+ ;INSERT UCB PTR MOV #PRMBUF,R3 ;POINT TO TEXT MOV #40.,R2 ;40 WORDS 179$: MOV (R3)+,(R1)+ ;MOVE 1 WORD SOB R2,179$ ;AND MORE MOV $MCRCB,(R0) ;LINK INTO LIST MOV R0,$MCRCB ; 180$: RETURN ; RETURN TO USER STATE AND ROOT -294,,/; JGD02/ .IFDF R$$PRV ;+ ; *** - PRIVCK - CHECK U.CW3 IN THE TERMINALS UCB TO SEE WHICH(IF ANY) ; RUN PRIVLEGES ARE ALLOWED. AT PRESENT TWO FLAVORS ; EXIST AND ARE DEFINED BY BITS IN PRVMSK. ; ; DEFINITION OF PRVMSK, THE ACCESS RIGHTS PRIVLEDGE MASK ; ; BIT 00 ALL RUN PRIVLEGES ARE DENIED ; ; BIT 01 RUN PRIVLEGES ARE ALLOWED IF AND ONLY IF THE DEFAULT PROTECTION ; UIC DEFINED BY U.LUIC IN THE TERMINAL UIC, IS EQUAL TO THE ; DEFAULT TASK UIC(H.DUIC) WHICH IS SET EITHER BY THE UIC OPTION ; AT TASK BUILD(BIGTKB) OR SET TO THE TERMINAL'S U.LUIC AT TASK- ; BUILD(AS BY FTB) IF THE UIC OPTION OMITTED ; ; BIT 02 IMMEDIATELY ACTIVATE TASK XXXXXX UPON EXIT FROM HELLO. THIS ; ALLOWS FOR USERS TO BE PERMANTLY SLAVED TO CLI'S OTHER THAN MCR ; ; BIT 03 SET TERMINAL TO SLAVE BEFORE ACTIVATING REQUESTED TASK ; ; BIT 04 DO NOT ABORT ANY TASKS AT LOGOFF ; ; BIT 06 PASS A MESSAGE TO UPDATE THE NUMBER OF DISK BLOCKS AND FILES ; USED BY THE USER AND TO PLACE THE INFORMATION IN THE USER'S ; ACCOUNT BLOCK. ; ; BIT 15 IF SET, THE USER IS SET PRIVLEGED REGARDLESS OF TERMINAL UIC. ; ; THE FUNCTION OF THIS IS SUBROUTINE IS EITHER TO VERIFY THAT THERE IS NO ; PRIVLEGE VIOLATION IF THE TASK IS RUN, OR TO PRINT A WARNING ERROR ; MESSAGE AND EXIT FROM INSTALL ; ; R4 - IS ONLY REGISTER USED AND DOESN'T INTERFERE WITH NON-MODIFIED ; INSHD CODE ;- PRIVCK: MOV $TKTCB,R4 ; GET TCB ADRESS MOV T.UCB(R4),R4 ; GET TERMINAL'S UCB ADDRESS MOV U.PRV1(R4),PRVMSK ; GET TERMINALS PRIVLEDGE MASK TST PRVMSK ; IF NO MASK BITS ARE SET - BEQ 40$ ; THEN RETURN TO MAINLINE CODE AT ONCE BIT #1,PRVMSK ; SEE IF ANY RUN PRIVLEDGES ALLOWED BEQ 20$ ; EQUAL TO ZERO SO SOMETHING IS ALLOWED ; BRANCH AROUND TO 20$ TO SEE WHAT MOV #ERR4,R0 ; BIT #1 IS SET, SO NO RUN COMMANDS ARE ALLOWED JMP INSHDE ; THIS USER. PRINT ERROR MESSAGE AND EXIT 20$: BIT #2,PRVMSK ; ANYTHING MORE TO CHECK FOR BEQ 40$ ; BIT 2 IS NOT SET SO RETURN TO MAINLINE CODE MOV U.LUIC(R4),LUIC ; SAVE PROTECTION UIC WORD MOV #$HDRBF,R4 ; GET HEADER BLOCK ADRESS CMP H.DUIC(R4),LUIC ; ARE THE DEFAULT AND PROTECTION UIC THE SAME BEQ 40$ ; YES, THEN RETURN CMP #177777,H.DUIC(R4) ; WAS THE TASK BUILT TO BE RUNNABLE BY ; EVERYONE BEQ 40$ ; YES, THEN RETURN CMP #100200,H.DUIC(R4) ; WAS THE TASK BUILT WITH FTB USING THE ; DEFAULT UIC =[200,200] ; THIS WAS FROM BEFORE THE PATCH TO FTB TO ; FIX THE H.DUIC TO THE TERMINAL UIC BEQ 40$ ; IF YES, THEN RETURN MOV #ERR5,R0 ; NO, THE USER MAY NOT RUN THIS TASK, WARN HIM JMP INSHDE ; PRINT ERROR MESSAGE, AND EXIT 40$: RETURN ; RETURN ; ; .ENDC /