SYS_SETUSER Source Listing 14-SEP-2004 16:29:32 AMAC V4.1-18-3381U Page 1 X01-01 28-MAY-2002 17:17:36 SETUSER.MAR;2 00000000 1 .TITLE SYS_SETUSER 00000000 2 ; .TITLE SYS_SET_USERNAME 00000000 3 ; 00000000 4 .IDENT /X01-001/ 00000000 5 ; 00000000 6 ; FACILITY: SYS - General procedure library 00000000 7 ; 00000000 8 ; ABSTRACT: Rewrite current process's USERNAME 00000000 9 ; 00000000 10 ; ENVIRONMENT: User mode, calls kernel mode routine, requires 00000000 11 ; user privelege CMKRNL 00000000 12 ; 00000000 13 ; 00000000 14 ; AUTHOR: Geoff Fitch 00000000 15 ; CREATION DATE: 04-AUG-82 00000000 16 ; 00000000 17 ;-- 00000000 18 ;++ 00000000 19 ; 00000000 20 ; FUNCTIONAL DESCRIPTION: 00000000 21 ; 00000000 22 ; 00000000 23 ; This routine is passed the address of a string descriptor 00000000 24 ; pointing to the new username, it copies the string buffer 00000000 25 ; to a local buffer and calls a kernel mode routine to write 00000000 26 ; the new username in control space and the JIB. 00000000 27 ; 00000000 28 ; Calling routines must be linked with SYS$SYSTEM:SYS.STB 00000000 29 ; 00000000 30 ; CALLING SEQUENCE: (from DCL) 00000000 31 ; 00000000 32 ; ret_status.wlc.v = SYS_SET_USERNAME ( new_name.rt.dx ) 00000000 33 ; 00000000 34 ; FORMAL PARAMETERS: 00000000 35 ; 00000000 36 ; NEW_NAME String containing the new username 00000000 37 ; 00000000 38 ; IMPLICIT INPUTS: 00000000 39 ; 00000000 40 ; NONE 00000000 41 ; 00000000 42 ; IMPLICIT OUTPUTS: 00000000 43 ; 00000000 44 ; Process control space (CTL$T_USERNAME) 00000000 45 ; Jb Info Block (JIB$T_USERNAME) 00000000 46 ; 00000000 47 ; COMPLETION STATUS: 00000000 48 ; 00000000 49 ; SS$_NORMAL Success 00000000 50 ; SS$_NOPRIV You don't have CMKRNL 00000000 51 ; something returned from LIB$SCOPY_DXDX 00000000 52 ; 00000000 53 ; SIDE EFFECTS: 00000000 54 ; 00000000 55 ; Process Username is changed 00000000 56 ;-- 00000000 57 ; SYS_SETUSER Source Listing 14-SEP-2004 16:29:32 AMAC V4.1-18-3381U Page 2 X01-01 28-MAY-2002 17:17:36 SETUSER.MAR;2 00000000 58 .LIBRARY /SYS$LIBRARY:LIB.MLB/ 00000000 59 $JIBDEF ; JIB symbols 00000000 207 $PCBDEF 00000000 784 00000000 785 .PSECT _SYS_DATA, RD, WRT, NOEXE, LONG, NOSHR 00000000 786 0000000C 00000000 787 UNAME_LEN = 12 00000000 788 UNAME_S: .BLKB UNAME_LEN ; New USERNAME 0000000C 789 0000000C 790 .PSECT _SYS_CODE, PIC, USR, CON, REL, LCL, SHR, EXE, RD, NOWRT 00000000 791 00000000 792 .ENTRY SYS_SET_USERNAME, ^M 00000002 793 MOVL #UNAME_S, -(SP) ; create string descr - address 00000009 794 PUSHL #UNAME_LEN ; - length 0000000B 795 PUSHAQ (SP) 0000000D 796 PUSHAQ @4(AP) ; copy username to local area 00000010 797 CALLS #2, G^LIB$SCOPY_DXDX 00000017 798 BLBC R0, 10$ ; return if copy failed 0000001A 799 ADDL #8, SP ; deallocate descriptor 0000001D 800 $CMKRNL_S ROUTIN=WRITEUSER ; call kernel routine 0000002C 839 10$: RET 0000002D 840 0000002D 841 .ENTRY WRITEUSER, ^M 0000002F 842 MOVL PCB$L_JIB(R4),R0 00000034 843 MOVC3 #UNAME_LEN,UNAME_S,JIB$T_USERNAME(R0) ; poke USERNAME 0000003D 844 MOVC3 #UNAME_LEN,UNAME_S,G^CTL$T_USERNAME ; poke USERNAME 00000049 845 MOVL #1, R0 ; return with success 0000004C 846 RET 0000004D 847 0000004D 848 ; .TITLE SYS_SET_UIC 0000004D 849 ; 0000004D 850 .IDENT /X01-01/ 0000004D 851 ; 0000004D 852 ; FACILITY: SYS - General procedure Library 0000004D 853 ; 0000004D 854 ; ABSTRACT: Rewrite current process's UIC 0000004D 855 ; 0000004D 856 ; ENVIRONMENT: User mode, calls kernel mode routine, requires 0000004D 857 ; user privelege CMKRNL 0000004D 858 ; 0000004D 859 ; 0000004D 860 ; AUTHOR: DSA , ABS STINE 0000004D 861 ; CREATION DATE: 09-SEP-83 0000004D 862 ; 0000004D 863 ;-- 0000004D 864 ;++ 0000004D 865 ; 0000004D 866 ; FUNCTIONAL DESCRIPTION: 0000004D 867 ; 0000004D 868 ; Sets process UIC to longword UIC passed from caller 0000004D 869 ; 0000004D 870 ; Note: Calling procedure must be linked with SYS$SYSTEM:SYS.STB 0000004D 871 ; 0000004D 872 ; CALLING SEQUENCE: (from high - level language) 0000004D 873 ; 0000004D 874 ; ret_status.wlc.v = SYS_SET_UIC ( new_uic.rl ) 0000004D 875 ; SYS_SETUSER Source Listing 14-SEP-2004 16:29:32 AMAC V4.1-18-3381U Page 3 X01-01 28-MAY-2002 17:17:36 SETUSER.MAR;2 0000004D 876 ; FORMAL PARAMETERS: 0000004D 877 ; 0000004D 878 ; NEW_UIC The longword containing the new UIC 0000004D 879 ; 0000004D 880 ; IMPLICIT INPUTS: 0000004D 881 ; 0000004D 882 ; NONE 0000004D 883 ; 0000004D 884 ; IMPLICIT OUTPUTS: 0000004D 885 ; 0000004D 886 ; Process Control Block (PCB$L_UIC) 0000004D 887 ; 0000004D 888 ; COMPLETION STATUS: 0000004D 889 ; 0000004D 890 ; SS$_NORMAL Success 0000004D 891 ; SS$_NOPRIV You don't have CMKRNL priv 0000004D 892 ; something returned from $CMKRNL 0000004D 893 ; 0000004D 894 ; SIDE EFFECTS: 0000004D 895 ; 0000004D 896 ; Process UIC is changed 0000004D 897 ; 0000004D 898 ;****************************************************************************** 0000004D 899 ; 0000004D 900 ; WARNING ******: DO NOT CHANGE THE FORMAT OF THE ADDRESSING IN THIS ROUTINE. 0000004D 901 ; WARNING ALMOST NO ERROR CHECKING IS, OR CAN BE DONE. THERE IS NO 0000004D 902 ; WARNING REAL WAY OF HANDLING AN EXCEPTION WHILE IN KERNEL MODE, 0000004D 903 ; AND HAVE IT COME BACK TO USER MODE. 0000004D 904 ; 0000004D 905 ; **** IN OTHER WORDS, YOU GOOF IT, YOU LOOSE IT. ***** 0000004D 906 ; 0000004D 907 ;****************************************************************************** 0000004D 908 ; 0000004D 909 ; integer*4 newuic, SYS_SET_UIC, ERROR 0000004D 910 ; DATA NEWUIC/ 65540 / ! SAME UIC AS [ 1,4 ] 0000004D 911 ; 0000004D 912 ; ERROR = SYS_SET_UIC( NEWUIC ) 0000004D 913 ; 0000004D 914 ; 0000004D 915 ;-- 0000004D 916 ; 0000004D 917 .LIBRARY /SYS$LIBRARY:LIB.MLB/ 0000004D 918 ; 0000004D 919 $SSDEF ; system return definitions 0000004D 1783 $PCBDEF 0000004D 1784 ; 0000004D 1785 .PSECT _SYS_DATA, RD, WRT, NOEXE, LONG, NOSHR 0000000C 1786 UIC: .BLKL 1 00000010 1787 00000010 1788 .PSECT _SYS_CODE, PIC, USR, CON, REL, LCL, SHR, EXE, RD, NOWRT 0000004D 1789 ; 0000004D 1790 .ENTRY SYS_SET_UIC,^M ; save all reg 0000004F 1791 ; 0000004F 1792 MOVL @4(AP),UIC 00000057 1793 ; 00000066 1794 $CMKRNL_S ROUTIN=SETUIC ; call kernel routine 00000066 1795 10$: RET SYS_SETUSER Source Listing 14-SEP-2004 16:29:32 AMAC V4.1-18-3381U Page 4 X01-01 28-MAY-2002 17:17:36 SETUSER.MAR;2 00000067 1796 ; 00000067 1797 .ENTRY SETUIC,^M 00000069 1798 MOVL UIC , PCB$L_UIC(R4) ; set user identification code 00000072 1799 MOVZWL #SS$_NORMAL,R0 ; SET A ONE IN R0 FOR NORMAL RETURN 00000075 1800 RET 00000076 1801 ; 00000076 1802 ; 00000076 1803 .END