Article 1408 of vmsnet.sources:
Path: nntpd.lkg.dec.com!sousa.amt.tay1.dec.com!pa.dec.com!decwrl!infopiz!news1.best.com!sgigate.sgi.com!swrinde!gatech!news.mathworks.com!mvb.saic.com!vmsnet-sources
Newsgroups: vmsnet.sources
Subject: JUMP, part 04/05
Message-ID: <64791159@MVB.SAIC.COM>
From: jonathan@hermes.ucs.unimelb.EDU.AU (Jonathan Ridler)
Date: Fri, 10 Nov 1995 03:26:54 GMT
Followup-To: vmsnet.sources.d
Organization: The University of Melbourne
Approved: Mark.Berryman@Mvb.Saic.Com
Lines: 965

Submitted-by: jonathan@hermes.ucs.unimelb.EDU.AU (Jonathan Ridler)
Posting-number: Volume 7, Issue 67
Archive-name: jump/part04

-+-+-+-+-+-+-+-+ START OF PART 4 -+-+-+-+-+-+-+-+
V`AD`E0`9F`AD`DC`DD`00`FB`05`00`0ASYS$CRELNM`1C`F4`D0PV`E8V`00`DD`00`DDV`FB`02
V`00`0ALIB$SIGNAL`1C`F5<`8F`00`02`AD`F4`DD`06`EF`00`0E`04`01.`1C`F2`AD`F0`9F`AD
V`F0`DD`0E`DD`06`9F`AD`E4`FB`05`00`07PAS$OCT`1C`CF`D0`10W`D1W`8F`FF`FF`00`00`1B
V`00`00`04`C3W`5C`5E`D0`5EX(`0A`EFt`F3`FF`FFn(`06`AD`E4c`B1W`10`1B`00`00`09,Wh
V`20`10`CDp`FF
X`02`80`B0`04`BD`D8`D0`AD`D8P`B0`03`A0`02`D0`AD`D8P`9E`AD`F4`A0`04`D0`AD`D8P`D4
V`A0`08`D0`AD`D8P`B0`10`A0`0C`D0`AD`D8P`B0`02`A0`0E`D0`AD`D8P`9E`CDp`FF`A0`10
V`D0`AD`D8P`D4`A0`14`D0`AD`D8P`D4`A0`18`DD`AD`D8`DF`8F`00`00`00`00`D0`8F`09`00
V`0E`01`AD`E4(`09`EF`0F`F3`FF`FF`AD`C4`9E`AD`C4`AD`E8`9F`AD`E4`D0`8F`15`00`0E
V`01`AD`EC(`15`EF`02`F3`FF`FF`CD8`FF`9E`CD8`FF`AD`F0`9F`AD`FB`EC`DD`00`FB`05`00
V`0ASYS$CRELNM`1C`F4`D0PV`E8V`00`DD`00`DDV`FB`02`00`0ALIB$SIGNAL`1C`F8`D0`AD`D8
VP`D4`A0`0C-`04`01`00`1C`04`01`02`1C`FF`20`05`01`D4`01`1C`05`01`D6`01`1C`E0`12
V`00`B4`BD`D8`D0`AD`D8P`B0`06`A0`02`D0`AD`D8P`D4`A0`04`D0`AD`D8P`D4`A0`081`00
V`00`01<`04`01`00`1C`DFX`C1`0CXW`D1W`8F`FF`FF`00`00`1B`00`00`04`C3W`5C`5E`D0`5E
V`5C(`0C`EF`94`F2`FF`FFn(X`04`01`02`1C`88c`C1W`13X`D1X`8F`FF`FF`00`00`1B`00`00
V`04`C3X`5C`5E`D0`5EY(Wln(`13`EFv`F2`FF`FFc`B0X`AD`80(Xi`AD`82`DD`00`DD`00`DD
V`00`D0`8F`20`00`0E`01`AD`EC`9E`CDP`FF`AD`F0`9F`AD`EC<`AD`80P`D0`01Y`F4Y`00`00
V`0C`C0PY`1F`F9`D1Y`8F@`00`00`00`1A`F0`9E`AD`82Y`D6Y`D7Y`B0P`AD`E4`B0`8F`0E`01
V`AD`E6`D0Y`AD`E8`9F`AD`E4`FB`05`00`0DSYS$PARSE_ACL`1C`F4`D0PV`E8V`00`DD`00`DDV
V`FB`02`00`0ALIB$SIGNAL`1C`BF`9A`CDP`FFP`0AP`00`8F`FF`FF`00`00`01`00P`95`0B`B0P
V`BD`D8`D0`AD`D8P`B0`01`A0`02`D0`AD`D8P`9E`CDP`FF`A0`04`D0`AD`D8P`D4`A0`08`DD
V`00`DD`00`DD`00`DD`00`DD`00`DD`AD`D8`B0`07`AD`EC`B0
X`02`E6`8F`0E`01`AD`EE`9E`EF`D2`F1`FF`FF`AD`F0`9F`AD`EC`DF`8F`05`00`00`00`DD`00
V`FB`09`00`0ESYS$CHANGE_ACL`1C`F4`D0PV`E8V`00`DD`00`DDV`FB`02`00`0ALIB$SIGNAL
V`1C`F6`04<@`C2`08`5E`D4`AD`F8`9E`00`0BPAS$HANDLER`1C`FDm(`0C`04`01`02`1C`00`0E
VCTL$T_USERNAME`1C`FF`D5`05`01`B8`01`1C`FB`12`00`00`06`D0`05`01`B8`01`1C`FDP(
V`0C`04`01`02`1C`F2`60`04`01`01`01<@`C2`08`5E`D4`AD`F8`9E`00`0BPAS$HANDLER`1C
V`FDm(`0C`00`0ECTL$T_USERNAME`1C`04`01`10`1C`FF`D5`05`01`B8`01`1C`FB`12`00`00
V`06`D0`05`01`B8`01`1C`FCP(`0C`60`04`01`1C`1C`F3`04`01`01`01`00@`C2`08`5E`D4`AD
V`F8`9E`00`0BPAS$HANDLER`1C`FEm`D5`05`01`BC`01`1C`FB`12`00`00`06`D0`05`01`BC`01
V`1C`FDP`D0`60`05`01`B8`01`1C`F6`04`FC@`C2`18`5E`D4`AD`F8`9E`00`0BPAS$HANDLER
V`1C`E8m`D0`BC`04`5C`D0`5EP`D4R`D0`5EV`DD`5C`D0`8F`0F`00`0E`01`AD`F0`9E`05`01:
V`02`1C`FA`AD`F4`9F`AD`F0`9F`05`018`02`1C`E9`B0`03`AD`E8`B0`8F`0E`01`AD`EA`9E
V`EF`D6`F0`FF`FF`AD`EC`9F`AD`E8`FB`04`00`07SYS$FAO`1C`F4`D0PR`E8R`00`DD`00`DDR
V`FB`02`00`0ALIB$SIGNAL`1C`F5`DD`5C`D0`8F`20`00`0E`01`AD`F0`9E`05`01r`02`1C`FA
V`AD`F4`9F`AD`F0`9F`05`01p`02`1C`E9`B0`03`AD`E8`B0`8F`0E`01`AD`EA`9E`EF`92`F0
V`FF`FF`AD`EC`9F`AD`E8`FB`04`00`07SYS$FAO`1C`F4`D0PR`E8R`00`DD`00`DDR`FB`02`00
V`0ALIB$SIGNAL`1C`FF-`05`018`02`1C`05`01:`02`1C
X`01`01`17`08`00`0BPAS$HANDLER`01`17`08`00`0BSYS$GETSYIW`01`17`08`00`0ALIB$SIGN
VAL`01`17`08`00`0BSYS$GETJPIW`01`00`08`00`0DPAS$FV_OUTPUT`01`17`08`00`10PAS$WRI
VTE_STRING`01`17`08`00`0CPAS$WRITELN2`01`17`08`00`08SYS$EXIT`01`17`08`00`08STR$
VTRIM`01`17`08`00`0DLIB$GET_INPUT`01`17`08`00`08JUMP_CLD`01`17`08`00`0DCLI$DCL_
VPARSE`01`17`08`00`0BCLI$PRESENT`01`17`08`00`0DCLI$GET_VALUE`01`04`08`00`09PCB$
VL_UIC`01`04`08`00`0ACTL$GL_PCB`01`17`08`00`0ASYS$CMEXEC`01`17`08`00`07PAS$HEX
V`01`17`08`00`0ASYS$CMKRNL`01`17`08`00`0BSYS$SETDDIR`01`17`08`00`0ASYS$CRELNM
V`01`17`08`00`07PAS$OCT`01`17`08`00`0DSYS$PARSE_ACL`01`17`08`00`0ESYS$CHANGE_AC
VL`01`0E`08`00`0ECTL$T_USERNAME`01`17`08`00`07SYS$FAO`01`17`08`00`09PAS$OPEN2
V`01`17`08`00`0APAS$EXTEND`01`17`08`00`0ASYS$ASCTIM`01`17`08`00`0EPAS$WRITE_CHA
VR
X`02`FF`20`05`01p`02`1C`05`01r`02`1C`FD`12`00`B4`05`01L`02`1C`FD(`00n`05`01N`02
V`1C`FC`11`00`01<`05`01p`02`1C`DF`5C`C1`03`5CW`D1W`8F`FF`FF`00`00`1B`00`00`04
V`C3WV`5E`D0`5EV(`03`EF,`F0`FF`FFn(`5C`05`01r`02`1C`F7c`B1W`20`1B`00`00`09`9E
V`05`01L`02`1C`EDP`B0W`60(`80f`60`04`01`7C@`C2<`5E`D4`AD`F8`9E`00`0BPAS$HANDLER
V`1C`C6m`9E`AD`E4P`9E`A0`10`80`D0`01`80`9E`EF`F0`EF`FF`FF`80`D4`60`90`BC`04`5C
V`D0`5EP`D4V(`17`EF`F1`EF`FF`FF`AD`CC`DD`1D`DD`05`9F`EF`FD`EF`FF`FF`DD`1A`DD`01
V`9F`AD`E4`FB`06`00`09PAS$OPEN2`1C`FB`9F`AD`E4`FB`01`00`0APAS$EXTEND`1C`E8`DD
V`00`DD`00`D0`8F`17`00`0E`01`AD`C4`9E`AD`CC`AD`C8`9F`AD`C4`DD`00`FB`04`00`0ASYS
V$ASCTIM`1C`F4`D0PV`E8V`00`DD`00`DDV`FB`02`00`0ALIB$SIGNAL`1C`D3`91`AD`CC`20`12
V`00`900`AD`CC`D0`01P`F4P`00`00`0C`C0`14P`1F`F9`D1P`17`1A`F4`9E`AD`CCP`D6P`D7P
V`9F`60`DD`14`9F`AD`E4`FB`03`00`10PAS$WRITE_STRING`1C`F7`DD`01`DD`20`9F`AD`E4
V`FB`03`00`0EPAS$WRITE_CHAR`1C`FF`9F`05`01`D6`01`1C`FF`DD`05`01`D4`01`1C`FB`9F
V`AD`E4`FB`03`00`10PAS$WRITE_STRING`1C`F9`E8`5C`031`00`00`9F`04`01,`1C`FA`FB`01
V`CF`FC`FD-`04`01`00`1C`04`01`02`1C`FF`20`05`01`D4`01`1C`05`01`D6`01`1C`F1`12
V`00`9F`EFN`EF`FF`FF`DD`06`9F`AD`E4`FB`03`00`10PAS$WRITE_STRING`1C`F1`11`00`9F
V`EFB`EF`FF`FF`DD`06`9F`AD`E4`FB`03
X`02`00`10PAS$WRITE_STRING`1C`FF`9F`05`01:`02`1C`FF`DD`05`018`02`1C`FB`9F`AD`E4
V`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`05`01N`02`1C`FF`DD`05`01L`02`1C`FB`9F`AD
V`E4`FB`03`00`10PAS$WRITE_STRING`1C`F1`11`00`9F`EF`0A`EF`FF`FF`DD`11`9F`AD`E4
V`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`05`01`E6`01`1C`FF`DD`05`01`E4`01`1C`FB
V`9F`AD`E4`FB`03`00`10PAS$WRITE_STRING`1C`FF-`04`01X`1C`04`01Z`1C`F2`20`00n`13
V`00`DD`01`DD`20`9F`AD`E4`FB`03`00`0EPAS$WRITE_CHAR`1C`FF`9F`04`01Z`1C`FF`DD`04
V`01X`1C`FB`9F`AD`E4`FB`03`00`10PAS$WRITE_STRING`1C`FF-`04`014`1C`04`016`1C`F2
V`20`00n`13`00`DD`01`DD`20`9F`AD`E4`FB`03`00`0EPAS$WRITE_CHAR`1C`FF`9F`04`016
V`1C`FF`DD`04`014`1C`FB`9F`AD`E4`FB`03`00`10PAS$WRITE_STRING`1C`FB`9F`AD`E4`FB
V`01`00`0CPAS$WRITELN2`1C`FB`9F`AD`E4`FB`01`00`0APAS$CLOSE2`1C`FF`16`00`12PAS$C
VLOSE_LOCAL_R3`1C`F5`04`01`7C@`C2`14`5E`D4`AD`F8`9E`00`0BPAS$HANDLER`1C`B5m`D0
V`5EP`D4`5C`D0`07`AD`F0`9A`8FT`AD`F4`C1`8F`AC`FF`FF`FFP`5E`D0`5E`AD`F4`D0`5EP
V`D0`01V`01`D0`AD`F4P`C5`0CVQ`95?(`0C`EF7`EE`FF`FFA`A0`F4`F3`07V`E8`B0`08`BD`F4
V`D0`AD`F4V`B0`20`A6`02`D0`AD`F4V`9E`05`01`A4`01`1C`F9`A6`04`D0`AD`F4V`D4
X`02`E9`A6`08`D0`AD`F4V`B0`08`A6`0C`D0`AD`F4V`B0`1F`A6`0E`D0`AD`F4V`9E`05`01`AC
V`01`1C`E2`A6`10`D0`AD`F4V`D4`A6`14`D0`AD`F4V`B0`04`A6`18`D0`AD`F4V`B0`06`A6`1A
V`D0`AD`F4V`9E`04`01,`1C`E2`A6`1C`D0`AD`F4V`D4`A6`20`D0`AD`F4V`B0`04`A6$`D0`AD
V`F4V`B0#`A6`26`D0`AD`F4V`9E`05`01`B4`01`1C`E0`A6(`D0`AD`F4V`D4`A6,`D0`AD`F4V
V`B0`8F`01`01`A60`D0`AD`F4V`B0`0E`A62`D0`AD`F4V`9E`05`01`A2`00`1C`E2`A64`D0`AD
V`F4V`D4`A68`D0`AD`F4V`B0"`A6<`D0`AD`F4V`B0`0D`A6>`D0`AD`F4V`9E`04`01`7E`1C`E6
V`A6@`D0`AD`F4V`D4`A6D`D0`AD`F4V`D4`A6H`DD`00`DD`00`DD`00`DD`AD`F4<`04`01`00`1C
V`FEV<`04`01`00`1C`ECP`D0`01Q`F4Q`00`00`0C`C0PQ`1F`F9`D1QV`1A`F4`9E`04`01`02`1C
V`E4V`D6V`D7V`B0P`AD`EC`B0`8F`0E`01`AD`EE`D0V`AD`F0`9F`AD`EC`DD`00`DD`00`FB`07
V`00`0ASYS$GETUAI`1C`DE`D0P`5C`E9`5C`00`90`01V`11`00`94V`E8`5C`00`D1`5C`8F`B2
V`82`01`00`12`031`00`00`DD`00`DD`5C`FB`02`00`0ALIB$SIGNAL`1C`F91`00`00`01`01`01
V`9A`05`01`A2`00`1C`F0P`0AP`00`8F`FF`00`00`00`01`00P`95`0B`B0P`05`01`A0`00`1C
V`FF`9A`04`01`7E`1C`F4P`0AP`00`20`01`00P`95`0B`B0P`04`01`7C`1C`FF<`05`01`A0`00
V`1C`E8P`D0`02`5C`F4`5C`00`00`0C`C0P`5C`1F`F9`D1`5C`8F`FF`00`00`00`1A`F0`9E`05
V`01`A2`00`1C`F3`5C`C0`02`5C`D7`5C,Pl`20`8F`FF`00`05`01`A2`00`1C`FF<`04`01`7C
V`1C`ECP`D0`02`5C`F4`5C`00`00`0C`C0P`5C`1F`F9`D1`5C`20`1A`F4`9E`04`01`7E`1C`F5
V`5C`C0`02`5C`D7`5C,Pl`20`20`04`01`7E`1C`F1`90VP`04`01`01`0C@`C2`10`5E`D4`AD`F8
V`9E
X`05`FD`06`B9`10`05`00L`05`1B`80`FE`B9`09`00`00`02`D5`FE`02`06`E6`02`05`AD`FC
V`F6`F4`02`01`F9`02`01`F9`02`01`E6`FD`02`01`F0`FC`02`01`F3`FC`F6`F7`02`01`F9`F8
V`F6`F7`02`01`F9`F8`F6`F4`02`01`F9`F8`F6`F4`02`01`F4`F8`F6`F7`02`01`F9`F8`F6`F7
V`02`01`F9`F8`F6`F7`02`01`F9`F8`F6`F4`02`01`F4`F8`F6`F4`02`01`F4`02`01`F9`02`02
V`E6`FD`02`01`F2`FC`02`01`F0`02`01`FB`DE`02`02`F3`02`01`F9`DE`02`03`F1`E3`02`01
V`DF`02`01`E4`CE`FD`02`01`F5`80`0E`04`02`03`FC`02`08`EB`FD`BC`02`01`B6`02`01`E2
V`E1`E3`02`01`F4`E1`02`01`D7`E1`02`01`E3`E1`02`01`E3`CC`F7`02`01`E7`FD`02`02`F3
V`CE`FD`02`02`F5`02`01`D3`DE`02`01`FE`0E`04`02`CE`FB`02`04`F3`E8`0E`01`147`02
V`00`00`FE`02`04`F3`E8`0E`01`02D`FE`02`08`CD`02`06`D2`EB`02`01`F3`02`01`F0`DE
V`02`01`01`83`00`02`03`F2`02`03`F3`B9`FD`02`03`F5`E8`F8`F4`02`01`F9`02`01`F9`02
V`03`B9`FD`02`03`F5`FA`FF`80`B9`02`01`B2`FC`F8`F7`02`01`F9`F8`F8`F6`02`01`F9`02
V`01`F9`02`03`B7`FD`02`05`F5`02`01`F9`02`01`E8`FD`F8`F9`02`03`F5`A8`02`01`AC`FD
V`02`01`F5`EA`F8`F6`02`02`F9`02`02`CC`FD`02`01`F5`0E`01`14`5C`02`00`00`FE`02`04
V`F3`F4`E7`0E`01`14R`02`00`00`FB`02`04`F3`F4`E7`0E`01`14I`02`00`00`FB`02`04`F3
V`E8`0E`01`14`B0`01`00`00`FE`02`06`E7`C6`FD`F5`C6`FD`F5`E8`02`01`EF`BE`0E`01`02
V`02`FD`02`08`CD`02
X`02`00`0BPAS$HANDLER`1C`F6m`FB`00`CF`B4`FD`E8P`00`E9`05`01`C8`01`1C`F6`00`9F
V`EF(`EC`FF`FF`DD8`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C
V`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C`F3`11`00`01`01`9F
V`EF:`EC`FF`FF`DD8`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C
V`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C`F8`DD`8F`B2`82`01
V`00`FB`01`00`08SYS$EXIT`1C`FF`E8`05`01`C6`01`1C`FB`031`00`00`E8`05`01`C5`01`1C
V`F3`00`9F`8F`00`FB`01`CF8`FB`DD$`FB`01`00`08SYS$EXIT`1C`FC`11`00`01-`04`01`00
V`1C`04`01`02`1C`FF`20`05`01`D4`01`1C`05`01`D6`01`1C`F5`12`00`9F`EF`06`EC`FF`FF
V`DD,`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`05`01`D6
V`01`1C`FF`DD`05`01`D4`01`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRIT
VE_STRING`1C`F7`9F`EF`04`EC`FF`FF`DD`14`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10
VPAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C
V`FC`DD`01`FB`01`00`08SYS$EXIT`1C`FF`E8`05`01`C7`01`1C`FC`031`00`00
X`02`FF`D1`04`01,`1C`04`01(`1C`FD`12`00`9F`04`01(`1C`F2`FB`01`CF`81`F9`9F`EF`CB
V`EB`FF`FF`DD`26`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF
V`9F`05`01:`02`1C`FF`DD`05`018`02`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10
VPAS$WRITE_STRING`1C`F7`9F`EF`C5`EB`FF`FF`DD`14`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB
V`03`00`10PAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`01`00`0CPAS$WRI
VTELN2`1C`FC`DD`01`FB`01`00`08SYS$EXIT`1C`FB1`00`00`01`E9`05`01`C5`01`1C`FB`031
V`00`00-`04`01`00`1C`04`01`02`1C`FF`20`05`01`D4`01`1C`05`01`D6`01`1C`F8`12`031
V`00`00`EF`00`0E`04`01.`1C`FDP`D1P`05`01`CC`01`1C`FD`15`00`9E`05`01`AC`01`1C`E1
VP`9E`EFl`EB`FF`FFQ`9E`AD`F0`5C`CB`81`80`8C`CB`81`80`8C-`08`AD`F0`00`00`8F`00
V`12`00`9E`05`01`A4`01`1C`D9P`9E`EFH`EB`FF`FF`5C`9E`AD`F0Q`CB`8C`80`81`CB`8C`80
V`81-`08`AD`F0`00`00`8F`00`13`00`9F`EF3`EB`FF`FF`DD)`9F`00`0DPAS$FV_OUTPUT`1C
V`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`01`00`0CP
VAS$WRITELN2`1C`FC`DD$`FB`01`00`08SYS$EXIT`1C`F81`00`00`01`01`01`E0`03`05`01`B4
V`01`1C`FE`00`E9`05`01`B6`01`1C`FE`00`E9`05`01`C5`01`1C`F6`00`9F`EF`18`EB`FF`FF
V`DD4`9F
X`02`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV_
VOUTPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C`F31`00`00`01`9F`EF`26`EB`FF`FF`DD4`9F
V`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV_OUT
VPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C`FC`DD$`FB`01`00`08SYS$EXIT`1C`F9`11`00`01
V`01`01`E1`04`05`01`B4`01`1C`FE`00`E9`05`01`C5`01`1C`F6`00`9F`EF`1B`EB`FF`FF`DD
V'`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV
V_OUTPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C`F4`11`00`01`9F`EF`1E`EB`FF`FF`DD'`9F
V`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV_OUT
VPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C`FC`DD$`FB`01`00`08SYS$EXIT`1C`F6`04`0C@
V`C2`10`5E`D4`AD`F8`9E`00`0BPAS$HANDLER`1C`F0m`DD`00`DD`00`DD`00`D0`8FP`00%`0B
V`AD`F0`9E`05`01`E4`01`1C`F9`AD`F4`9F`AD`F0`FB`04`00`0FLIB$GET_FOREIGN`1C`FE`D0
VP`05`01`D0`01`1C`FF`E8`05`01`D0`01`1C`FC`00`DD`00`DD`05`01`D0`01`1C`FE`FB`02
V`00`0ALIB$SIGNAL`1C`FB`FB`00`CF`A3`EB
X`02`F1`E8P`00`9F`8F`00`FB`01`CFd`F8`DD$`FB`01`00`08SYS$EXIT`1C`EF`FB`00`CF`FA
V`EE`E8P`031`00`00`FB`00`CF`87`FC`E8`05`01`C6`01`1C`FB`031`00`00`9E`00`09PCB$L_
VJIB`1C`FDP`C1P`00`0ACTL$GL_PCB`1C`05`01`BC`01`1C`F6`95?`DD`00`9F`CF`E6`F6`FB
V`02`00`0ASYS$CMEXEC`1C`FF`9E`00`0EJIB$T_USERNAME`1C`FDP`C0P`05`01`B8`01`1C`F6
V`95?`DD`00`9F`CF`91`F6`FB`02`00`0ASYS$CMEXEC`1C`FE)`0C`04`01`10`1C`05`01`D6`01
V`1C`FC`12`00)`0C`04`01`1C`1C`05`01`D6`01`1C`F2`12`031`00`00`9F`EF=`EA`FF`FF`DD
V5`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV
V_OUTPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C`F7`9F`EFS`EA`FF`FF`DD`1D`9F`00`0DPAS$
VFV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`05`01`D6`01`1C`FF`DD`05
V`01`D4`01`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`F7
V`9F`EFE`EA`FF`FF`DD`0B`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING
V`1C`FF`9F`04`01`10`1C`FD`DD`0C`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRIT
VE_STRING`1C`F7`9F`EF'`EA`FF`FF`DD`07`9F`00`0DPAS$FV_OUTPUT`1C`FF`FB
X`02`FF`03`00`10PAS$WRITE_STRING`1C`FF`9F`04`01`1C`1C`FD`DD`0C`9F`00`0DPAS$FV_O
VUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB
V`01`00`0CPAS$WRITELN2`1C`FC`DD,`FB`01`00`08SYS$EXIT`1C`F3`11`00`01`01`01`DD`00
V`9F`CFn`F5`FB`02`00`0ASYS$CMKRNL`1C`FF`E9`05`01`C7`01`1C`F1`00`FB`00`CF`CB`F0
V`9F`8F`01`FB`01`CF`03`F7`E8`05`01`C4`01`1C`FB`031`00`00`E8`05`01`C7`01`1C`F3
V`031`00`00`9F`EF`B5`E9`FF`FF`DD`10`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$
VWRITE_STRING`1C`FF`9F`05`01`D6`01`1C`FF`DD`05`01`D4`01`1C`FF`9F`00`0DPAS$FV_OU
VTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`F7`9F`EF`97`E9`FF`FF`DD`0B`9F`00`0DP
VAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`04`01`02`1C`FF`DD`04
V`01`00`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`F7`9F
V`EFu`E9`FF`FF`DD`02`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C
V`FF`9F`05`01:`02`1C`FF`DD`05`018`02`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00
V`10PAS$WRITE_STRING`1C`FF`9F`05`01N`02`1C`FF`DD`05`01L`02`1C
X`02`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FB`DD`01`DD)
V`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`0EPAS$WRITE_CHAR`1C`FF`9F`00`0DPAS$FV_OU
VTPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C`F7`9F`EF`14`E9`FF`FF`DD`1C`9F`00`0DPAS$F
VV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`04`01`7E`1C`FF`DD`04`01`7C
V`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`05`01
V`A2`00`1C`FF`DD`05`01`A0`00`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$W
VRITE_STRING`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`01`00`0CPAS$WRITELN2`1C`FF`E9
V`05`01`C6`01`1C`F6`00`9F`EF`D5`E8`FF`FF`DD'`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03
V`00`10PAS$WRITE_STRING`1C`FF`9F`05`01`D6`01`1C`FF`DD`05`01`D4`01`1C`FF`9F`00
V`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`F7`9F`EF`CF`E8`FF`FF`DD
V`04`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03`00`10PAS$WRITE_STRING`1C`FF`9F`04`01`02
V`1C`FF`DD`04`01`00`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`03
X`02`00`10PAS$WRITE_STRING`1C`FF`9F`00`0DPAS$FV_OUTPUT`1C`FE`FB`01`00`0CPAS$WRI
VTELN2`1C`FC`D0`01P`04`04`01`00P`F2`0C`00`20`20`20`20`20`20`20`20`20`20`20`20Q
V`02`00`00`00`DC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`00`00`00`00`00`00`00`00`00`00`00`00Q$`00`00`00Q$`00`00`00Q$`00`00`00
VQ`04`01`00`00`FC`00`00`00`00Q`04`00`00`00`FC`00`00`00`00Q`04`00`00`00`FD`00`00
V`00Q`01`00`00`00`EF`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00`00Q`03`00
V`00`00`EA`00`00`00`00`00`00`00`00`0C`00`20`20`20`20`20`20`20`20`20`20`20`20Q
V`02`00`00`00QT`00`00`00Q`14`00`00`00Q$`00`00`00`05`00`FF`05P`FF`10Q`0C`00`00
V`00`FF`14Q`06`00`00`00`FF`0DQy`01`00`00`FF`0EQ`0C`00`00`00`FE`1A`01Q`03`00`00
V`00`FF`10Q`0E`00`00`00`FE`06`01Q`04`00`00`00`FF/Q,`00`00`00`FE`D3`00Q`07`00`00
V`00`FF1Q,`00`00`00`FE`9D`00Q`16`00`00`00`FF`02Q`0F`00`00`00`FF`02Q`0F`00`00`00
V`FF`02Q`10`00`00`00`FF`02Q`0F`00`00`00`FF`02Q9`00`00`00`FF`0BQ>`00`00`00`FF`02
VQ`1F`00`00`00`FF`02Qb`00`00`00`FF`0CQ`08`00`00`00`FF`03Q`02`00`00`00`FF`09Q2
V`00`00`00`FF`09Q`08`00`00`00`FF`02Q>`00`00`00`FF`02Q`13`00`00`00`FF`02Q3`00`00
V`00`FF`09Q`08`00`00`00`FF`02Q2`00`00`00`FF`09Q`08`00`00`00`FF`02QE`00`00`00`FF
V`19Q`17`00`00`00`FFQQ`03`00`00`00`FF`0DQ`0C`00`00`00`FF@Q4`00`00`00`FF`0BQ`20
V`00`00`00`FF`11Q`0A`00`00`00`FF`06Q`0B`00`00`00`FF$QA`00`00`00
X`02`FF`02Q'`00`00`00`FF`02Q`A4`00`00`00`FE`B3`00Q`AF`00`00`00`FEI`03Q`1F`00`00
V`00`FF`02Q8`00`00`00`FF`0BQ`8E`00`00`00`FF`0BQ9`00`00`00`FF`02Q`1A`00`00`00`FF
V`02Q`99`00`00`00`FF`0BQ)`00`00`00`FF`1DQ`1A`00`00`00`FE`EA`00Q`14`00`00`00`FF
V`02Q%`00`00`00`FF`02Q>`00`00`00`FF`02Q5`00`00`00`FF`0BQp`00`00`00`FF`0BQ.`00
V`00`00`FF`02Q7`00`00`00`FF`02Q+`00`00`00`FF`02Qh`00`00`00`FF`0BQG`00`00`00`FF
V`0BQ"`00`00`00`FF`11Q`0F`00`00`00`FFCQ`14`00`00`00`FF`02Q`1D`00`00`00`FF`02Q
V`8B`00`00`00`FF`0BQ`10`00`00`00`FF`04Q`09`00`00`00`FF`02QJ`00`00`00`FEw`00Q"
V`00`00`00`FF`14Q`13`00`00`00`FF`12Q?`00`00`00`FF(Q7`00`00`00`FF$Q3`00`00`00`FF
V$Q`7B`01`00`00`FF`02Q8`00`00`00`FF`05Q`04`00`00`00`FF`02Q`04`00`00`00`FF`1DQ
V`0A`00`00`00`FE`A7`00Q`0C`00`00`00`FE`99`00QA`00`00`00`FF`02Q4`00`00`00`FF`02Q
V>`00`00`00`FF`5CQ`06`00`00`00`FF`26Q#`00`00`00`FF1Q9`00`00`00`FE`8C`00Q`06`00
V`00`00`FF`14Q`12`00`00`00`FFrQ`18`00`00`00`FFYQa`00`00`00`FE`F0`01Q`0C`00`00
V`00`FFhQe`00`00`00`FE`7C`01Q`09`00`00`00`FE`A6`00Q`19`00`00`00`FE`8B`00Q`11`00
V`00`00`FFHQ#`00`00`00`FF$Q#`00`00`00`FF1Q,`00`00`00`FE`CE`00Q`0A`00`00`00`FF
V`07Q`06`00`00`00`FF`5DQ`06`00`00`00`FF`26Q#`00`00`00`FE`90`00Q-`00`00`00`FFbQ
V`0A`00`00`00`FFWQ`06`00`00`00`FF%Q#`00`00`00`FF,Qi`00`00`00`FF`0FQ`16`00`00`00
V`FF`11Q`1A`00`00`00`FE`E6`02Q`0D`00`00`00`FE*`01
X`02QL`00`00`00`FF`11Q`0F`00`00`00`FE`BF`00Q`BB`00`00`00`FF`10Q`16`00`00`00`FF
V`0DQ`15`00`00`00`FE`8F`01Q`08`00`00`00`FE`15`01Q`1B`01`00`00`FFi
X`01`01`17`08`00`0APAS$CLOSE2`01`17`08`00`12PAS$CLOSE_LOCAL_R3`01`17`08`00`0ASY
VS$GETUAI`01`17`08`00`0FLIB$GET_FOREIGN`01`04`08`00`09PCB$L_JIB`01`04`08`00`0EJ
VIB$T_USERNAME`00`02`E9`00`B2`1C`00`00`05$CODE`00`02`89`01`92`02`00`00`06$LOCAL
V
X`05`80`02`E8`02`01`F6`E0`FD`F5`F6`B4`02`01`FA`F5`E8`02`01`EC`EE`02`02`D2`D8`CC
V`CC`02`01`F6`F6`0E`07`14t`01`00`00`FD`02`04`EE`02`02`CC`FC`F8`F4`02`01`F9`F8
V`F8`F4`02`01`F9`F8`F8`F4`02`01`F9`F8`F8`F4`02`01`F9`F6`F8`F4`02`01`F9`F8`F8`F4
V`02`01`F9`02`01`F9`02`02`AD`02`01`F6`02`01`FD`F4`02`03`EF`E5`E9`CB`02`01`D1`0E
V`04`02<`FC`02`0A`F3`02`01`F8`F9`02`02`DA`DE`02`03`F3`02`01`F6`02`01`F9`F8`8C
V`80`B9`02`02`F4`02`01`E8`02`01`B0`02`03`F7`F6`02`01`F3`F5`02`01`B0`02`02`F3`02
V`05`81`DE`02`02`F1`F1`F9`02`02`DA`DE`02`02`F2`F8`F9`02`02`DB`DE`02`01`F7`0E`01
V`145`00`00`00`FE`03`D4`02`F3`D9`F9`02`01`F1`02`01`F8`F8`02`02`F7`02`01`F5`FB
V`14o`02`00`00`F6`02`A8`EB`14r`02`00`00`F3`02`02`E3`02`02`E1`DE`02`01`01`8F`00
V`02`02`F2`02`9A`F3`02`01`F9`FB`02`01`F8`14`F7`02`00`00`F6`02`01`F6`02`01`F1`01
V`C1`00`02`02`AC`F9`02!`97`0E`04`10`B8`00`04`00`00`1B`F3`05$CODE`B2`1C`00`00`11
V`B8`00`04`01`00`1B`F2`06$LOCAL`92`02`00`00`0B`BE`00`05`00X`19`1B`FB`04JUMP
X`05`FD`16`BE`00`05`00L`05`1B`F0`0FCHECK_AUTHORITY
X`05`F9`06`BF`00p`03`00`00
X`05`FD`1C`BE`00`05`00`BC`08`1B`EA`15GET_AND_PARSE_COMMAND
X`05`F9`06`BF`00`CC`02`00`00
X`05`FD`0D`BE`00`05`00`1C`14`1B`F9`06GETUAI
X`05`F9`06`BF`008`02`00`00
X`05`FD`12`BE`00`05`00`00`11`1B`F4`0BFORMAT_USER
X`05`F9`06`BF`00`18`01`00`00
X`05`FD`11`BE`00`05`00`18`12`1B`F5`0AAUDIT_JUMP
X`05`F9`06`BF`00`04`02`00`00
X`05`FD`1B`BE`00`05`00T`16`1B`EB`14VALIDATE_USER_RECORD
X`05`F9`06`BF`00`04`03`00`00
X`05`FD`0D`BE`00`05`00`B0`0B`1B`F9`06GETUIC
X`05`F9`06`BF`00(`00`00`00
X`05`FD`0D`BE`00`05`00`88`0B`1B`F9`06SETUIC
X`05`F9`06`BF`00(`00`00`00
X`05`FD`17`BE`00`05`00`D8`10`1B`EF`10GET_JIB_USER_PTR
X`05`F9`06`BF`00(`00`00`00
X`05`FD`0E`BE`00`05`00`A0`10`1B`F8`07GETUSER
X`05`F9`06`BF`008`00`00`00
X`05`FD`0E`BE`00`05`00h`10`1B`F8`07SETUSER
X`05`F9`06`BF`008`00`00`00
X`05`FD`0F`BE`00`05`00`D8`0B`1B`F7`08KANGAROO
X`05`F9`06`BF`00`90`04`00`00
X`05`F7`06`BF`00Z`03`00`00`01`BD
X`03`00`00X`19`00`00
$ call unpack JUMP.OBJ_VAX;1 2055170187 "FORMAT VARIABLE;CARRIAGE_CONTROL NONE" -
 26 4 6
$!
$ create 'f'
X`7B************************************************************************
X*`09`09`09`09`09`09`09`09`09*
X*`20`20J`20U`20M`20P`09`09`09`09`09`09`09`09*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20JUMP`20is`20a`20program`20which`20allows`20selected`20users`20(Operator
Vs`20and`20`09*
X*`20`20Systems`20Programmers)`20to`20change`20elements`20of`20their`20process
V`20to`20those`09*
X*`20`20of`20another`20user.`20`20Limitations`20are`20placed`20on`20non-Systems
V`09`09*
X*`20`20Programmers:`20they`20cannot`20target`20users`20who`20have`20more`20tha
Vn`20a`20certain`09*
X*`20`20set`20of`20privileges`20and`20they`20cannot`20change`20username.`09`09
V`09*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20Items`20which`20are`20changed`20to`20those`20of`20the`20target`20user
V`20are:`09`09*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20`20`20Username`20(Systems`20Programmers`20only,`20using`20the`20SETUSER
V`20or`09`09*
X*`09`20`20`20`20`20`20`20ALL`20qualifier)`09`09`09`09`09`09*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20`20`20UIC,`20Default`20Directory,`20Default`20Disk,`20LNM$GROUP.`09`09
V`09*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20Privileges`20and`20process`20rights`20are`20NOT`20changed.`09`09`09*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20The`20syntax`20of`20the`20JUMP`20command`20is`09`09`09`09`09*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20`20`20`20`20$`20JUMP`20`5Busername`5D`20`5Bqualifiers`5D`09`09`09`09`09
V*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20If`20no`20username`20is`20supplied,`20JUMP`20returns`20all`20item`20val
Vues`20to`20those`20of`20*
X*`20`20the`20current`20username.`09`09`09`09`09`09*
X*.......................................................................*
X*`20`20****`20`20CAUTION:`20KERNEL-mode`20code`20fiddles`20things`20!!!`20****
V`09`09*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20INSTALL`20program`20with`20CMEXEC,`20CMKRNL,`20SYSPRV,`20SYSNAM`20privi
Vleges.`09*
X*`09`09`09`09`09`09`09`09`09*
X*`20`20NOTE:`20The`20definition`20of`20privilege`20sets`20has`20been`20adopted
V`20for`20ease`20of`09*
X*`20`20coding.`20`20The`20source`20for`20the`20information`20is`20SYS$LIBRARY:
VSTARLET.PAS.`09*
X*`20`20The`20definition`20will`20need`20reviewing`20with`20each`20release`20of
V`20OpenVMS!`09*
X*.......................................................................*
X*`20`20Note:`20Some`20ideas`20in`20this`20code`20have`20been`20drawn`20from`20
VEric`20Wentz's`09*
X*`09`20program`20BECOME.`09`09`09`09`09`09*
X*.......................................................................*
X*`20`20Author:`20`20Jonathan`20Ridler,`09`09`09`09`09`09*
X*`09`20`20`20`20Information`20Technology`20Services,`09`09`09`09*
X*`09`20`20`20`20The`20University`20of`20Melbourne,`09`09`09`09*
X*`09`20`20`20`20Parkville,`20Victoria,`09`09`09`09`09*
X*`09`20`20`20`20AUSTRALIA,`203052.`09`09`09`09`09`09*
X*`09`09`09`09`09`09`09`09`09*
X*`09`20`20`20`20Internet:`20jonathan@ucsvc.its.unimelb.edu.au`20`09`09*
X*.......................................................................*
X*`20`20History:`09`09`09`09`09`09`09`09*
X*`0902-Mar-1993`09JER`09Original`20version.`09`09`09*
X*`0909-Mar-1993`09JER`09Audit`20security`20violations.`09`09*
X*`0904-Mar-1994`09JER`09Add`20change`20username`20capability.`20`09*
X*`0914-Jul-1994`09JER`09Allow`20change`20of`20UIC,`20etc.`20AND`20username;`20
V*
X*`09`09`09`09Allow`20username`20NOT`20in`20UAF.`09`09*
X************************************************************************`7D
X
X`5BINHERIT`20('SYS$LIBRARY:STARLET',
X`09`20`20'SYS$LIBRARY:PASCAL$LIB_ROUTINES',
X`09`20`20'SYS$LIBRARY:PASCAL$STR_ROUTINES')`5D
X
XPROGRAM`20Jump`20(OUTPUT)`20;
X
XTYPE
X
X$UWORD`20=`20`5BWORD`5D`200..65535`20;
X
XPrivilege`20=`20(Cmkrnl,`09`7B`20`200:`20May`20change`20Mode`20to`20Kernel`20
V`7D
X`09`20`20`20`20`20Cmexec,`09`7B`20`201:`20May`20change`20Mode`20to`20Exec;`20M
VUST`20follow`20Cmkrnl`20`7D
X`09`20`20`20`20`20Sysnam,`09`7B`20`202:`20May`20insert`20in`20system`20logical
V`20name`20table`20`7D
X`09`20`20`20`20`20Grpnam,`09`7B`20`203:`20May`20insert`20in`20group`20l.n.tab;
V`20MUST`20follow`20Sysnam`20`7D
X`09`20`20`20`20`20Allspool,`09`7B`20`204:`20May`20allocate`20spooled`20device
V`20`7D
X`09`20`20`20`20`20Detach,`09`7B`20`205:`20May`20create`20detached`20processes
V`20`7D
X`09`20`20`20`20`20Diagnose,`09`7B`20`206:`20May`20diagnose`20devices`20`7D
X`09`20`20`20`20`20Log_Io,`09`7B`20`207:`20May`20do`20logical`20I/O`20`7D
X`09`20`20`20`20`20Group,`09`7B`20`208:`20May`20affect`20other`20processes`20in
V`20same`20UIC`20group`20`7D
X`09`20`20`20`20`20Acnt,`09`7B`20`209:`20May`20suppress`20accounting`20`7D
X`09`20`20`20`20`20Prmceb,`09`7B`2010:`20May`20create`20permanent`20common`20ev
Vent`20clusters`20`7D
X`09`20`20`20`20`20Prmmbx,`09`7B`2011:`20May`20create`20permanent`20mail`20box
V`20`7D
X`09`20`20`20`20`20Pswapm,`09`7B`2012:`20May`20change`20process`20mode`20`7D
X`09`20`20`20`20`20Altpri,`09`7B`2013:`20May`20set`20any`20priority`20value`20
V`7D
X`09`20`20`20`20`20Setprv,`09`7B`2014:`20May`20set`20any`20privilege`20bits`20
V`7D
X`09`20`20`20`20`20Tmpmbx,`09`7B`2015:`20May`20create`20temporary`20mailbox`20
V`7D
X`09`20`20`20`20`20World,`09`7B`2016:`20May`20affect`20other`20processes`20in
V`20the`20world`20`7D
X`09`20`20`20`20`20Mount,`09`7B`2017:`20May`20execute`20mount`20ACP`20functions
V`20`7D
X`09`20`20`20`20`20Oper,`09`7B`2018:`20Operator`20privilege`20`7D
X`09`20`20`20`20`20Exquota,`09`7B`2019:`20May`20exceed`20disk`20quotas`20`7D
X`09`20`20`20`20`20Netmbx,`09`7B`2020:`20May`20create`20network`20device`20`7D
V
X`09`20`20`20`20`20Volpro,`09`7B`2021:`20May`20override`20volume`20protection
V`20`7D
X`09`20`20`20`20`20Phy_Io,`09`7B`2022:`20May`20do`20physical`20I/O`20`7D
X`09`20`20`20`20`20Bugchk,`09`7B`2023:`20May`20make`20bug`20check`20error`20log
V`20entries`20`7D
X`09`20`20`20`20`20Prmgbl,`09`7B`2024:`20May`20create`20permanent`20global`20se
Vctions`20`7D
X`09`20`20`20`20`20Sysgbl,`09`7B`2025:`20May`20create`20system-wide`20global`20
Vsections`20`7D
X`09`20`20`20`20`20Pfnmap,`09`7B`2026:`20May`20map`20to`20section`20by`20PFN`20
V`7D
X`09`20`20`20`20`20Shmem,`09`7B`2027:`20May`20allocate`20structures`20in`20shar
Ved`20memory`20`7D
X`09`20`20`20`20`20Sysprv,`09`7B`2028:`20Eligible`20for`20system`20protection
V`20field`20`7D
X`09`20`20`20`20`20Bypass,`09`7B`2029:`20May`20bypass`20UIC-based`20protection
V`20`7D
X`09`20`20`20`20`20Syslck,`09`7B`2030:`20May`20create`20system-wide`20locks`20
V`7D
X`09`20`20`20`20`20Share,`09`7B`2031:`20May`20assign`20channel`20to`20non-share
Vd`20device`20`7D
X`09`20`20`20`20`20Upgrade,`09`7B`2032:`20May`20upgrade`20object`20integrity`20
V`7D
X`09`20`20`20`20`20Downgrade,`20`7B`2033:`20May`20downgrade`20object`20secrecy
V`20`7D
X`09`20`20`20`20`20Grpprv,`09`7B`2034:`20Group`20access`20via`20system`20protec
Vtion`20field`20`7D
X`09`20`20`20`20`20Readall,`09`7B`2035:`20May`20read`20any`20object`20`7D
X`09`20`20`20`20`20Import,`09`7B`2036:`20May`20set`20classification`20for`20unl
Vabeled`20object`20`7D
X`09`20`20`20`20`20Audit,`09`7B`2037:`20May`20direct`20audit`20to`20system`20se
Vcurity`20audit`20log`20`7D
X`09`20`20`20`20`20Security,`09`7B`2038:`20May`20perform`20security`20functions
V`20`7D
X`09`20`20`20`20`20Pbit39,`20Pbit40,`20Pbit41,`20Pbit42,`20Pbit43,`20Pbit44,`20
VPbit45,
X`09`20`20`20`20`20Pbit46,`20Pbit47,`20Pbit48,`20Pbit49,`20Pbit50,`20Pbit51,`20
VPbit52,
X`09`20`20`20`20`20Pbit53,`20Pbit54,`20Pbit55,`20Pbit56,`20Pbit57,`20Pbit58,`20
VPbit59,
X`09`20`20`20`20`20Pbit60,`20Pbit61,`20Pbit62,`20Pbit63)`20;`09`7B`2039-63:`20d
Vummy`20bits:`202`20LONGs`20`7D
X
XPrivset`20=`20PACKED`20SET`20OF`20Privilege`20;`09`7B`20To`20allow`20easy`20bi
Vt`20union,`20etc.`20`7D
X
XStatus_Block_Type`20=`20`5BUNSAFE`5D`20PACKED`20ARRAY`20`5B1..4`5D`20OF`20$UWO
VRD`20;
X
XItem_List_Cell`20=`20RECORD
X`09`09`20`20`20CASE`20INTEGER`20OF
X`09`09`20`20`20`20`201:`20(`09`09`09`7B`20Normal`20Cell`20`7D
X`09`09`09`20Buffer_Length`20:`20$UWORD`20;
X`09`09`09`20Item_Code`20`20`20`20`20:`20$UWORD`20;
X`09`09`09`20Buffer_Addr`20`20`20:`20UNSIGNED`20;
X`09`09`09`20Return_Addr`20`20`20:`20UNSIGNED
X`09`09`09)`20;
X`09`09`20`20`20`20`202:`20(`09`09`09`7B`20Terminator`20`7D
X`09`09`09`20Terminator`20`20`20`20:`20UNSIGNED
X`09`09`09)`20;
X`09`09`20END`20;
X
XItem_List_Template`20(Count:INTEGER)`20=`20ARRAY`20`5B1..Count`5D`20OF`20Item_
VList_Cell`20;
X
XUsername_Type`20=`20PACKED`20ARRAY`20`5B1..12`5D`20OF`20CHAR`20;
X
XVAR`09`09`09`7B`20***`20`20V`20A`20R`20`20***`20`7D
X
XLog`20,`09`09`09`09`7B`20Log`20success`20messages?`20`7D
XSysprog`20,`09`09`09`7B`20Systems`20Programmer?`20`7D
XAlter_Ego`20,`09`09`09`7B`20Change`20Username?`20`7D
XTransmute`20,`09`09`09`7B`20Change`20UIC,`20etc.?`20`7D
XFigment`20:`20BOOLEAN`20:=`20FALSE`20;`09`7B`20Allow`20username`20NOT`20in`20U
VAF?`20`7D
X
XMax_Sys_Group`20:`20INTEGER`20:=`200`20;`09`7B`20Maximum`20UIC`20group`20with
V`20system`20privilege`20`7D
X
XRst`20:`20UNSIGNED`20:=`200`20;`09`09`7B`20Return`20Status`20`7D
X
XUser`20:`20VARYING`20`5B12`5D`20OF`20CHAR`20:=`20PAD`20('','`20',12)`20;
X
XNew_User`20:`20`5BVOLATILE`5D`20VARYING`20`5B12`5D`20OF`20CHAR`20:=`20PAD`20('
V','`20',12)`20;
X
XSanity_Ctl_User`20,
XSanity_Jib_User`20:`20`5BVOLATILE`5D`20Username_Type`20:=`20''`20;
X
XCommand`20:`20VARYING`20`5B80`5D`20OF`20CHAR`20:=`20''`20;`09`09`7B`20Input`20
Vcommand`20line`20`7D
X
XUic`20,
XNew_Uic`20,
XSanity_Uic`20:`20`5BVOLATILE`5D`20UIC$TYPE`20:=`20ZERO`20;
X
XTerminal`20,
XPort`20,
XDef_Dev`20:`20`5BVOLATILE`5D`20VARYING`20`20`5B32`5D`20OF`20CHAR`20:=`20''`20;
V
X
XDef_Dir`20:`20`5BVOLATILE`5D`20VARYING`20`5B255`5D`20OF`20CHAR`20:=`20''`20;
X
XUic_Str`20:`20VARYING`20`5B15`5D`20OF`20CHAR`20:=`20ZERO`20;
X
XEq_Id_Str`20,
XId_Str`09:`20VARYING`20`5B32`5D`20OF`20CHAR`20:=`20ZERO`20;
X
XDef_Priv`20,
XAuth_Priv`20:`20`5BUNSAFE,VOLATILE`5D`20`20Privset`20:=`20ZERO`20;
X
XFlags`20:`20`5BVOLATILE`5D`20`20FLAGS$TYPE`20:=`20ZERO`20;
X
XJib_User_Ptr`20:`20`5BVOLATILE`5D`20`5E`5BVOLATILE`5D`20Username_Type`20:=`20N
VIL`20;
X
XCTL$T_USERNAME`20:`20`5BEXTERNAL,VOLATILE`5D`20Username_Type`20;
X
XJib_Ptr`20,
XUic_Ptr`20:`20`5BVOLATILE`5D`20`5E`5BVOLATILE`5D`20UNSIGNED`20:=`20NIL`20;
X
XPCB$L_JIB`20,
XPCB$L_UIC`20,
XJIB$T_USERNAME`20,
XCTL$GL_PCB`20:`20`5BEXTERNAL`5D`20UNSIGNED`20;
X
X
X`5BASYNCHRONOUS`5D`20FUNCTION`20SYS$SETDDIR`20(
X`09New_Dir_Addr`20:
X`09`09`5BCLASS_S`5D`20PACKED`20ARRAY`20`5B$L1..$U1:INTEGER`5D`20OF`20CHAR`20:=
V`20%IMMED`200`20;
X`09VAR`20Length_Addr`20:`20`5BVOLATILE`5D`20$UWORD`20:=`20%IMMED`200`20;
X`09%STDESCR`20Cur_Dir_Addr`20:
X`09`09PACKED`20ARRAY`20`5B$L3..$U3:INTEGER`5D`20OF`20CHAR`20:=`20%IMMED`200`20
V)
X`09`09:`20UNSIGNED`20;`20EXTERNAL`20;
X
X`5BASYNCHRONOUS`5D`20FUNCTION`20CLI$DCL_PARSE`20(
X`09Command_String`20:
X`09`09`5BCLASS_S`5D`20PACKED`20ARRAY`20`5B$L1..$U1:INTEGER`5D`20OF`20CHAR`20:=
V`20%IMMED`200`20;
X`09%IMMED`20`5BASYNCHRONOUS,UNBOUND`5D`20PROCEDURE`20Table`20;
X`09%IMMED`20`5BASYNCHRONOUS,UNBOUND`5D
X`09`09FUNCTION`20Param_Routine`09:`20INTEGER`20:=`20%IMMED`200`20;
X`09%IMMED`20`5BASYNCHRONOUS,UNBOUND`5D
X`09`09FUNCTION`20Prompt_Routine`20:`20INTEGER`20:=`20%IMMED`200`20;
X`09Prompt_String`20:
X`09`09`5BCLASS_S`5D`20PACKED`20ARRAY`20`5B$L5..$U5:INTEGER`5D`20OF`20CHAR`20:=
V`20%IMMED`200`20)
X`09`09:`20UNSIGNED`20;`20EXTERNAL`20;
X
X`5BASYNCHRONOUS`5D`20FUNCTION`20CLI$GET_VALUE`20(
X`09Entity_Desc`20:`20`5BCLASS_S`5D`20PACKED`20ARRAY`20`5B$L1..$U1:INTEGER`5D
V`20OF`20CHAR`20;
X`09%DESCR`20Retdesc`20:`20VARYING`20`5B$L2`5D`20OF`20CHAR`20;
X`09VAR`20Retlength`20:`20`5BVOLATILE`5D`20$UWORD`20:=`20%IMMED`200`20)
X`09`09:`20UNSIGNED`20;`20EXTERNAL`20;
X
X`5BASYNCHRONOUS`5D`20FUNCTION`20CLI$PRESENT`20(
X`09Entity_Desc`20:`20`5BCLASS_S`5D`20PACKED`20ARRAY`20`5B$L1..$U1:INTEGER`5D
V`20OF`20CHAR`20)
X`09`09:`20UNSIGNED`20;`20EXTERNAL`20;
X
X
XFUNCTION`20Check_Authority`20:`20BOOLEAN`20;
X
X`7B`20Check`20that`20the`20invoker`20has`20the`20required`20access`20to`20run
V`20this`20program.
X`20`20This`20is`20independant`20of`20any`20installed`20privileges.`20`20Identi
Vfy`20SysProgs.`20`7D
X
X`20`20VAR`09Rst`20:`20INTEGER`20:=`200`20;
X`09Iosb`20:`20Status_Block_Type`20:=`20ZERO`20;
X`09Item_List`20:`20Item_List_Template`20(10)`20:=`20ZERO`20;
X`09Pid`20,`20Master_Pid`20,`20Proc_Cnt`20:`20`5BVOLATILE`5D`20UNSIGNED`20:=`20
V0`20;
X`09Proc_Def_Priv`20,`20Proc_Auth_Priv`20:`20`5BUNSAFE,VOLATILE`5D`20`20Privset
V`20:=`20ZERO`20;
X
X`20`20BEGIN`20`09`7B`20Check_Authority`20`7D
X
X`20`20Item_List`5B1`5D.Buffer_Length`20:=`204`20;
X`20`20Item_List`5B1`5D.Item_Code`20`20`20`20`20:=`20SYI$_MAXSYSGROUP`20;
X`20`20Item_List`5B1`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Max_Sys_Group)`20;
V
X`20`20Item_List`5B1`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B2`5D.Terminator`20`20`20`20:=`200`20;`20`20`20`7B`20Terminat
Ve`20the`20item`20list`20`7D
X
X`20`20Rst`20:=`20$GETSYIW`20(Itmlst`20:=`20Item_List,
X`09`09`20`20`20Iosb`20`20`20:=`20Iosb)`20;
X`20`20IF`20NOT`20ODD`20(Rst)`20`20THEN
X`20`20`20`20`20LIB$SIGNAL`20(Rst)
X`20`20`20ELSE
X`20`20IF`20NOT`20ODD`20(Iosb`5B1`5D)`09THEN
X`20`20`20`20`20LIB$SIGNAL`20(Iosb`5B1`5D)`20;
X
X`20`20Item_List`5B1`5D.Buffer_Length`20:=`208`20;
X`20`20Item_List`5B1`5D.Item_Code`20`20`20`20`20:=`20JPI$_PROCPRIV`20;
X`20`20Item_List`5B1`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Proc_Def_Priv)`20;
V
X`20`20Item_List`5B1`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B2`5D.Buffer_Length`20:=`208`20;
X`20`20Item_List`5B2`5D.Item_Code`20`20`20`20`20:=`20JPI$_AUTHPRIV`20;
X`20`20Item_List`5B2`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Proc_Auth_Priv)`20
V;
X`20`20Item_List`5B2`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B3`5D.Buffer_Length`20:=`204`20;
X`20`20Item_List`5B3`5D.Item_Code`20`20`20`20`20:=`20JPI$_UIC`20;
X`20`20Item_List`5B3`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Uic.UIC$L_UIC)`20;
V
X`20`20Item_List`5B3`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B4`5D.Buffer_Length`20:=`20SIZE`20(User)`20;
X`20`20Item_List`5B4`5D.Item_Code`20`20`20`20`20:=`20JPI$_USERNAME`20;
X`20`20Item_List`5B4`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(User.BODY)`20;
X`20`20Item_List`5B4`5D.Return_Addr`20`20`20:=`20IADDRESS`20(User.LENGTH)`20;
X
X`20`20Item_List`5B5`5D.Buffer_Length`20:=`204`20;
X`20`20Item_List`5B5`5D.Item_Code`20`20`20`20`20:=`20JPI$_PID`20;
X`20`20Item_List`5B5`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Pid)`20;
X`20`20Item_List`5B5`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B6`5D.Buffer_Length`20:=`204`20;
X`20`20Item_List`5B6`5D.Item_Code`20`20`20`20`20:=`20JPI$_MASTER_PID`20;
X`20`20Item_List`5B6`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Master_Pid)`20;
X`20`20Item_List`5B6`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B7`5D.Buffer_Length`20:=`204`20;
X`20`20Item_List`5B7`5D.Item_Code`20`20`20`20`20:=`20JPI$_PRCCNT`20;
X`20`20Item_List`5B7`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Proc_Cnt)`20;
X`20`20Item_List`5B7`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B8`5D.Buffer_Length`20:=`20SIZE`20(Port.BODY)`20;
X`20`20Item_List`5B8`5D.Item_Code`20`20`20`20`20:=`20JPI$_TT_ACCPORNAM`20;
X`20`20Item_List`5B8`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Port.BODY)`20;
X`20`20Item_List`5B8`5D.Return_Addr`20`20`20:=`20IADDRESS`20(Port.LENGTH)`20;
X
X`20`20Item_List`5B9`5D.Buffer_Length`20:=`20SIZE`20(Terminal.BODY)`20;
X`20`20Item_List`5B9`5D.Item_Code`20`20`20`20`20:=`20JPI$_TERMINAL`20;
X`20`20Item_List`5B9`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Terminal.BODY)`20;
V
X`20`20Item_List`5B9`5D.Return_Addr`20`20`20:=`20IADDRESS`20(Terminal.LENGTH)
V`20;
X
X`20`20Item_List`5B10`5D.Terminator`20`20`20:=`200`20;`09`7B`20Terminate`20the
V`20item`20list`20`7D
X
X`20`20Rst`20:=`20$GETJPIW`20(Itmlst`20:=`20Item_List,
X`09`09`20`20`20Iosb`20`20`20:=`20Iosb)`20;
X
X`20`20IF`20NOT`20ODD`20(Rst)`20`20THEN
X`20`20`20`20`20LIB$SIGNAL`20(Rst)
X`20`20`20ELSE
X`20`20IF`20NOT`20ODD`20(Iosb`5B1`5D)`09THEN
X`20`20`20`20`20LIB$SIGNAL`20(Iosb`5B1`5D)
X`20`20`20ELSE
X`20`20IF`20Proc_Cnt`20>`200`20`20THEN
X`20`20`20`20`20BEGIN
X`20`20`20`20`20WRITELN`20('%JUMP-F-NOSUB,`20Cannot`20JUMP`20while`20process`20
Vhas`20sub-processes.')`20;
X`20`20`20`20`20$EXIT`20;
X`20`20`20`20`20END
X`20`20`20ELSE
X`20`20IF`20Pid`20<>`20Master_Pid`09THEN
X`20`20`20`20`20BEGIN
X`20`20`20`20`20WRITELN`20('%JUMP-F-NOINSUB,`20Cannot`20JUMP`20from`20a`20sub-p
Vrocess.')`20;
X`20`20`20`20`20$EXIT`20;
X`20`20`20`20`20END
X`20`20`20ELSE
X`20`20`20`20`20BEGIN
X`20`20`20`20`20Sysprog`20:=`20Uic.UIC$V_GROUP`20<`20Max_Sys_Group`20;
X`20`20`20`20`20Sysprog`20:=`20Sysprog`20OR`20(Setprv`20IN`20Proc_Auth_Priv)`20
VOR
X`09`09`09`20`20`20(Setprv`20IN`20Proc_Def_Priv)`20;
X`20`20`20`20`20Check_Authority`20:=`20Sysprog`20OR`20(Oper`20IN`20Proc_Auth_Pr
Viv)`20OR
X`09`09`09`09`20`20`20(Oper`20IN`20Proc_Def_Priv)`20;
X`20`20`20`20`20Rst`20:=`20STR$TRIM`20(%DESCR`20User,%DESCR`20User)`20;
X`20`20`20`20`20IF`20NOT`20ODD`20(Rst)`20`20THEN
X`09LIB$SIGNAL`20(Rst)`20;
X`20`20`20`20`20END`20;
X`20`20END`20;`20`09`7B`20of`20Check_Authority`20`7D
X
X
X
XFUNCTION`20Get_And_Parse_Command`20:`20BOOLEAN`20;
X
X`7B`20Get`20and`20parse`20the`20DCL`20command`20line.`20`20Do`20some`20basic
V`20username`20checks.`20`7D
X
X`20`20VAR`09Rst`20:`20UNSIGNED`20:=`200`20;
X
X`20`20`5BASYNCHRONOUS`5D`20PROCEDURE`20Jump_Cld`20;`20EXTERNAL`20;`09`7B`20CLD
V`20module`20`7D
X
X`20`20BEGIN`20`09`7B`20Get_And_Parse_Command`20`7D
X`20`20Get_And_Parse_Command`20:=`20TRUE`20;
X`20`20Command`20:=`20'JUMP`20'`20+`20Command`20;
X`20`20Rst`20:=`20CLI$DCL_PARSE`20(Command,Jump_Cld,%IMMED`20LIB$GET_INPUT,
X`09`09`09%IMMED`20LIB$GET_INPUT,'JUMP>`20')`20;
X`20`20IF`20(Rst`20=`20RMS$_EOF)`20OR`20(Rst`20=`20CLI$_NOCOMD)`20OR`20(NOT`20O
VDD`20(Rst))`20THEN`20`20$EXIT`20;
X
X`20`20Rst`20:=`20CLI$PRESENT`20('SETUSER')`20;
X`20`20Alter_Ego`20:=`20(Rst`20=`20CLI$_PRESENT)`20OR`20(Rst`20=`20CLI$_DEFAULT
VED)`20;
X`20`20Transmute`20:=`20NOT`20Alter_Ego`20;
X
X`20`20Rst`20:=`20CLI$PRESENT`20('ALL')`20;
X`20`20Alter_Ego`20:=`20Alter_Ego`20OR`20(Rst`20=`20CLI$_PRESENT)`20OR`20(Rst
V`20=`20CLI$_DEFAULTED)`20;
X
X`20`20Rst`20:=`20CLI$PRESENT`20('OVERRIDE_UAF')`20;
X`20`20Figment`20:=`20(Rst`20=`20CLI$_PRESENT)`20OR`20(Rst`20=`20CLI$_DEFAULTED
V)`20;
X
X`20`20Rst`20:=`20CLI$PRESENT`20('LOG')`20;
X`20`20Log`20:=`20(Rst`20=`20CLI$_PRESENT)`20OR`20(Rst`20=`20CLI$_DEFAULTED)`20
V;
X
X`20`20Rst`20:=`20CLI$GET_VALUE`20('USERNAME',New_User)`20;`09`7B`20Assume`20wi
Vll`20be`20there`20`7D
X`20`20IF`20Rst`20=`20CLI$_ABSENT`09THEN
X`20`20`20`20`20New_User`20:=`20User`09`09`09`09`7B`20Default`20to`20current`20
Vusername`20`7D
X`20`20`20ELSE
X`20`20IF`20NOT`20ODD`20(Rst)`20`20THEN
X`20`20`20`20`20LIB$SIGNAL`20(Rst)
X`20`20`20ELSE
X`20`20`20`20`20BEGIN
X`20`20`20`20`20Rst`20:=`20STR$TRIM`20(%DESCR`20New_User,%DESCR`20New_User)`20;
V
X`20`20`20`20`20IF`20NOT`20ODD`20(Rst)`20`20THEN
X`09LIB$SIGNAL`20(Rst)`20;
X`20`20`20`20`20END`20;
X
X`20`20IF`20FIND_NONMEMBER`20(New_User,`5B'A'..'Z','0'..'9','_','$'`5D)`20<>`20
V0`20THEN
X`20`20`20`20`20BEGIN
X`20`20`20`20`20WRITELN`20('%JUMP-F-BADUSER,`20Username`20contains`20invalid`20
Vcharacters.')`20;
X`20`20`20`20`20Get_And_Parse_Command`20:=`20FALSE`20;
X`20`20`20`20`20END`20;
X`20`20END`20;`20`7B`20of`20Get_And_Parse_Command`20`7D
X
X
XFUNCTION`20Getuai`20:`20BOOLEAN`20;
X
X`7B`20Get`20the`20required`20information`20for`20the`20particular`20new`20user
V`20from`20the`20UAF.`20`7D
X
X`20`20VAR`09Rst`20:`20INTEGER`20:=`200`20;
X`09Item_List`20:`20Item_List_Template`20(7)`20:=`20ZERO`20;
X
X`20`20BEGIN`20`09`7B`20Getuai`20`7D
X`20`20Item_List`5B1`5D.Buffer_Length`20:=`208`20;
X`20`20Item_List`5B1`5D.Item_Code`20`20`20`20`20:=`20UAI$_DEF_PRIV`20;
X`20`20Item_List`5B1`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Def_Priv)`20;
X`20`20Item_List`5B1`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B2`5D.Buffer_Length`20:=`208`20;
X`20`20Item_List`5B2`5D.Item_Code`20`20`20`20`20:=`20UAI$_PRIV`20;
X`20`20Item_List`5B2`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Auth_Priv)`20;
X`20`20Item_List`5B2`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B3`5D.Buffer_Length`20:=`204`20;
X`20`20Item_List`5B3`5D.Item_Code`20`20`20`20`20:=`20UAI$_UIC`20;
X`20`20Item_List`5B3`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(New_Uic.UIC$L_UIC)
V`20;
X`20`20Item_List`5B3`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B4`5D.Buffer_Length`20:=`204`20;
X`20`20Item_List`5B4`5D.Item_Code`20`20`20`20`20:=`20UAI$_FLAGS`20;
X`20`20Item_List`5B4`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Flags)`20;
X`20`20Item_List`5B4`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B5`5D.Buffer_Length`20:=`20SIZE`20(Def_Dir)`20;
X`20`20Item_List`5B5`5D.Item_Code`20`20`20`20`20:=`20UAI$_DEFDIR`20;
X`20`20Item_List`5B5`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Def_Dir.BODY)`20;
V
X`20`20Item_List`5B5`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B6`5D.Buffer_Length`20:=`20SIZE`20(Def_Dev)`20;
X`20`20Item_List`5B6`5D.Item_Code`20`20`20`20`20:=`20UAI$_DEFDEV`20;
X`20`20Item_List`5B6`5D.Buffer_Addr`20`20`20:=`20IADDRESS`20(Def_Dev.BODY)`20;
V
X`20`20Item_List`5B6`5D.Return_Addr`20`20`20:=`200`20;
X
X`20`20Item_List`5B7`5D.Terminator`20`20`20`20:=`200`20;`09`7B`20Terminate`20th
Ve`20item`20list`20`7D
X
X`20`20Rst`20:=`20$GETUAI`20(Usrnam`20:=`20%STDESCR`20SUBSTR`20(New_User,1,New_
VUser.LENGTH),
X`09`09`20`20Itmlst`20:=`20Item_List)`20;
X
X`20`20Getuai`20:=`20ODD`20(Rst)`20;
X
X`20`20IF`20NOT`20ODD`20(Rst)`20`20THEN
X`20`20`20`20`20BEGIN
X`20`20`20`20`20IF`20Rst`20<>`20RMS$_RNF`20`20THEN
X`09LIB$SIGNAL`20(Rst)`20;
X`20`20`20`20`20END
X`20`20`20ELSE
X`20`20`20`20`20BEGIN
X`20`20`20`20`20Def_Dir.LENGTH`20:=`20INT`20(Def_Dir.BODY`5B1`5D)`20;
X`20`20`20`20`20Def_Dev.LENGTH`20:=`20INT`20(Def_Dev.BODY`5B1`5D)`20;
X`20`20`20`20`20Def_Dir.BODY`20:=`20SUBSTR`20(Def_Dir.BODY,2,Def_Dir.LENGTH)`20
V;
X`20`20`20`20`20Def_Dev.BODY`20:=`20SUBSTR`20(Def_Dev.BODY,2,Def_Dev.LENGTH)`20
V;
X`20`20`20`20`20END`20;
X`20`20END`20;`20`09`7B`20of`20Getuai`20`7D
X
X
XPROCEDURE`20Format_User`20(Uic`20:`20UIC$TYPE)`20;
X
X`7B`20Create`20a`20string`20with`20the`20UIC`20in`20numeric`20and`20rights`20i
Vdentifier`20formats`20`7D
X
X`20`20VAR`20`20Rst`20:`20INTEGER`20:=`200`20;
X
X`20`20BEGIN`20`09`7B`20Format_User`20`7D
X`20`20Rst`20:=`20$FAO`20('!%U',Uic_Str.LENGTH,%STDESCR`20Uic_Str.BODY,%IMMED
V`20Uic)`20;
X`20`20IF`20NOT`20ODD`20(Rst)`20`20THEN
X`20`20`20`20`20LIB$SIGNAL`20(Rst)`20;
X`20`20Rst`20:=`20$FAO`20('!%I',Id_Str.LENGTH,%STDESCR`20Id_Str.BODY,%IMMED`20U
Vic)`20;
X`20`20IF`20NOT`20ODD`20(Rst)`20`20THEN
X`20`20`20`20`20LIB$SIGNAL`20(Rst)`20;
X`20`20IF`20Uic_Str`20=`20Id_Str`20`20THEN
X`20`20`20`20`20Eq_Id_Str`20:=`20''
X`20`20`20ELSE
X`20`20`20`20`20Eq_Id_Str`20:=`20'`20=`20'`20+`20Id_Str`20;
X`20`20END`20;`20`09`7B`20of`20Format_User`20`7D
X
X
XPROCEDURE`20Audit_Jump`20(Ok`20:`20BOOLEAN)`20;
X
X`7B`20Record`20who,`20when,`20where,`20etc.`20for`20auditing`20purposes`20`7D
V
X
X`20`20VAR`09Rst`20:`20UNSIGNED`20:=`200`20;
X`09Audit`20:`20TEXT`20;
X`09Stamp`20:`20PACKED`20ARRAY`20`5B1..23`5D`20OF`20CHAR`20:=`20''`20;
X
X`20`20BEGIN`20`09`7B`20Audit_Jump`20`7D
X`20`20OPEN`20(Audit,FILE_NAME:='SYS_MANAGER:JUMP_AUDIT.DAT',`09`7B`20SITE-spec
Vific`20`7D
X`09`20`20`20`20`20`20HISTORY:=Unknown,
X`09`20`20`20`20`20`20SHARING:=READWRITE)`20;
X`20`20EXTEND`20(Audit)`20;
X
X`20`20Rst`20:=`20$ASCTIM`20(Timbuf`20:=`20%STDESCR`20Stamp)`20;
X`20`20IF`20NOT`20ODD`20(Rst)`20`20THEN
X`20`20`20`20`20LIB$SIGNAL`20(Rst)`20;
X`20`20IF`20Stamp`5B1`5D`20=`20'`20'`20`20THEN`20`20Stamp`5B1`5D`20:=`20'0'`20;
V
X`20`20WRITE`20(Audit,SUBSTR`20(Stamp,1,20),'`20',User)`20;
X`20`20IF`20Ok`20`20THEN
X`20`20`20`20`20BEGIN
X`20`20`20`20`20Format_User`20(New_Uic)`20;
X`20`20`20`20`20IF`20New_User`20=`20User`20`20THEN
X`09WRITE`20(Audit,'`20from`20')
X`20`20`20`20`20`20ELSE
X`09WRITE`20(Audit,'`20`20to`20`20')`20;
X`20`20`20`20`20WRITE`20(Audit,Uic_Str,Eq_Id_Str)`20;
X`20`20`20`20`20END
X`20`20`20ELSE
X`20`20`20`20`20WRITE`20(Audit,'`20PRIV`20violation:`20',Command)`20;
X`20`20IF`20Port`20<>`20''`20`20THEN`20`20WRITE`20(Audit,'`20',Port)`20;
X`20`20IF`20Terminal`20<>`20''`20`20THEN`20`20WRITE`20(Audit,'`20',Terminal)`20
V;
X`20`20WRITELN`20(Audit)`20;
X
X`20`20CLOSE`20(Audit)`20;
X`20`20END`20;`20`09`7B`20of`20Audit_Jump`20`7D
X
X
XPROCEDURE`20Validate_User_Record`20;
X
X`7B`20For`20the`20type`20of`20user`20running`20the`20program,`20validate`20the
V`20requested`20user's`20UAF
X`20`20record.
X
X`20`20Non-SysProgs`20(operators)`20can`20only`20jump`20to`20users`20who`20do
V`20not`20have`20any
X`20`20privileges`20other`20than`20those`20that`20are`20"OK".`20`7D
X
X`20`20CONST`20`20Ok_Privs`20=`20`5BGroup,Grpprv,Grpnam,Netmbx,Tmpmbx,Prmceb`5D
V`20;
X
X`20`20BEGIN`20`09`7B`20Validate_User_Record`20`7D
X`20`20IF`20NOT`20Getuai`20`20THEN
X`20`20`20`20`20BEGIN
X`20`20`20`20`20IF`20Figment`20`20THEN
X`09WRITELN`20('%JUMP-W-INVUSER,`20Invalid`20username`20-`20user`20does`20not
V`20exist.')
X`20`20`20`20`20`20ELSE
X`09BEGIN
X`09WRITELN`20('%JUMP-F-INVUSER,`20Invalid`20username`20-`20user`20does`20not
V`20exist.')`20;
X`09$EXIT`20(RMS$_RNF)`20;
X`09END`20;
X`20`20`20`20`20END`20;
X
X`20`20IF`20Alter_Ego`09THEN
X`20`20`20`20`20BEGIN
X`20`20`20`20`20IF`20NOT`20Sysprog`20`20THEN
X`09BEGIN
X`09Audit_Jump`20(FALSE)`20;
X`09$EXIT`20(SS$_NOPRIV)`20;
X`09END
X`20`20`20`20`20`20ELSE
X`20`20`20`20`20IF`20New_User`20=`20User`20`20THEN
X`09BEGIN
X`09WRITELN`20('%JUMP-I-SAMEUSER,`20Same`20username`20as`20current`20(',User,
X`09`09`20')`20-`20no`20action`20taken.')`20;
X`09$EXIT`20;
X`09END`20;
X`20`20`20`20`20END`20;
X
X`20`20IF`20Transmute`09THEN
X`20`20`20`20`20IF`20New_Uic.UIC$L_UIC`20=`20Uic.UIC$L_UIC`20`20THEN
X`09BEGIN
X`09Format_User`20(Uic)`20;
X`09WRITELN`20('%JUMP-I-SAMEUIC,`20Same`20UIC`20as`20current`20(',Uic_Str,
X`09`09`20')`20-`20no`20action`20taken.')`20;
X`09$EXIT`20;
X`09END
X`20`20`20`20`20`20ELSE
X`20`20`20`20`20IF`20(NOT`20Sysprog)`20`20AND_THEN
X`09(New_User`20<>`20User)`20AND_THEN
X`09(((Auth_Priv`20-`20Ok_Privs)`20<>`20`5B`5D)`20OR
X`09`20((Def_Priv`20`20-`20Ok_Privs)`20<>`20`5B`5D)`20OR
X`09`20(New_Uic.UIC$V_GROUP`20<=`20Max_Sys_Group))`20`20THEN
X`09BEGIN
X`09WRITELN`20('%JUMP-F-PRIVUSER,`20Username`20is`20privileged.')`20;
X`09$EXIT`20(SS$_NOPRIV)`20;
X`09END
X`20`20`20`20`20`20ELSE
X`20`20`20`20`20IF`20(Flags.UAI$V_RESTRICTED`20OR`20Flags.UAI$V_CAPTIVE)`20`20T
VHEN
X`09IF`20Sysprog`20`20THEN
X`09`20`20`20WRITELN`20('%JUMP-W-RESTRICT,`20Username`20is`20Restricted`20or`20
VCaptive.')
X`09`20ELSE
X`09`20`20`20BEGIN
X`09`20`20`20WRITELN`20('%JUMP-F-RESTRICT,`20Username`20is`20Restricted`20or`20
VCaptive.')`20;
X`09`20`20`20$EXIT`20(SS$_NOPRIV)`20;
X`09`20`20`20END
X`20`20`20`20`20`20ELSE
X`20`20`20`20`20IF`20Flags.UAI$V_DISACNT`20`20THEN
X`09IF`20Sysprog`20`20THEN
X`09`20`20`20WRITELN`20('%JUMP-W-DISABLED,`20Username`20is`20disabled.')
X`09`20ELSE
X`09`20`20`20BEGIN
X`09`20`20`20WRITELN`20('%JUMP-F-DISABLED,`20Username`20is`20disabled.')`20;
X`09`20`20`20$EXIT`20(SS$_NOPRIV)`20;
X`09`20`20`20END`20;
X`20`20END`20;`20`09`7B`20of`20Validate_User_Record`20`7D
X
X
+-+-+-+-+-+-+-+-  END  OF PART 4 +-+-+-+-+-+-+-+-


