<<< DOCD$:[NOTES$LIBRARY]SCT-RAVEN.NOTE;1 >>> -< The SCT Raven conference >- ================================================================================ Note 236.0 BUGFIX: RMS: FAL resource ident. file ownership No replies EVMS::EWOODS "{VDE SCT}" 296 lines 6-FEB-1997 19:43 -------------------------------------------------------------------------------- Project: RMS Project Leader: Elinor M. Woods Development Stream: RAVEN-FT1 Checkin Type: BugFix Coded by: Bob Premovich Reviewed by: Elinor Woods - RMS and FAL Dave Miller - DIRECTORY Problem Symptom: Creation of a file over the network into a directory owned by a resource identifier strips the high order 2 bits of the owner field, corrupting the ownership information. Checking the owner on the remote system will reveal a UIC looking value derived from the low order bits of the identifier. Directory commands to a remote system will also strip the high order 2 bits from a general identifier on the remote system, formatting the result in UIC format. The stripping of the high order 2 bits of the owner value may result in the following errors being returned to a non-privileged user performing a COPY/LOG to a remote directory owned by a resource identifier: %COPY-S-COPIED, {file specification} copied to {remote file specification} %COPY-E-CLOSEOUT, error closing {file specification} as output -RMS-E-PRV, insufficient privilege or file protection violation Diagnosis: This was the result of a design oversight that failed to take into account the possible exchange of file ownership information for a file owned by a resource identifier. The design presumed a UIC value. A FAO directive for a UIC based value was used (!%U) that resulted in the high order bits of the rights identifier being cleared since the bits are "undefined" by a standard UIC value. Day 1 problem since resource identifiers were introduced. Cure: Modify modules such that the full identifier value is exchanged and displayed between hosts. Platforms affected: Both Alpha and VAX at this time Modules: [RMS]NT0BLDXAB.B32 [FAL]FALBLDXAB.B32 [DIR]DISPLAY.B32 [DIR]DIRECTMSG.MSG Affected Images (if feasible): [SYS$LDR]RMS.EXE [SYSEXE]FAL.EXE [SYSEXE]DIRECTORY.EXE Impact/Risks: Without this fix, applications may get a RMS-E-PRV error. With the fix, such applications will now succeed so fix will not cause breakage to existing applications or command procedures. Risks are minimal. How this change was Tested: A RAVEN-FT1 system was booted with the affected new images in place and the procedures identified in the QARs reporting this issue were executed with the expected results. Associated QARs,CLDs,SPRs: SPR_VMS_V5: # 06022 SPR_VMS_V5: # 05990 SPR_VMS_V5: # 02759 SPR_VMS_V5: # 02144 SPR_VMS_V5: # 00675 V6: # 00287 (Optional) Comments: (Optional) Special Build Instructions: DIFFERENCES: ************ File DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;2 1 $BEGIN NT0BLDXAB,13,NF$NETWORK, 2 ****** File DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;1 1 $BEGIN NT0BLDXAB,12,NF$NETWORK, 2 ************ ************ File DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;2 35 ; X-13 BP008 Bob Premovich 03-Feb-1997 36 ; Modify method of exchanging object ownership information 37 ; for network operations to prevent the drop of the 2 high 38 ; order bits of resource identifier values. A %U (UIC) FAO 39 ; directive was being used which caused the omission. 40 ; 41 ; X-12 CW002 Chris Whitaker 3-Sep-1992 ****** File DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;1 35 ; X-12 CW002 Chris Whitaker 3-Sep-1992 ************ ************ File DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;2 150 T_UIC: .ASCII \[!OW,!OW]\ ; FAO control string 151 T_UIC_LEN = .-T_UIC ****** File DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;1 144 T_UIC: .ASCII \!%U\ ; FAO control string 145 T_UIC_LEN = .-T_UIC ************ ************ File DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;2 673 P1=XAB$W_GRP(R6)- ; UIC of file owner 674 P2=XAB$W_MBM(R6) 675 BLBS R0,40$ ; Branch on success ****** File DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;1 667 P1=XAB$W_MBM(R6) ; UIC of file owner 668 BLBS R0,40$ ; Branch on success ************ Number of difference sections found: 4 Number of difference records found: 10 DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.DIF;1- DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;2- DISK$RMS_DEV:[PREMOVICH.BUILD.RMS.SRC]NT0BLDXAB.MAR;1 ============================================================================================ ************ File DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;2 16 .IDENT 'X-8' 17 ****** File DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;1 16 .IDENT 'X-7' 17 ************ ************ File DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;2 52 ; X-8 BP008 Bob Premovich 03-Feb-1997 53 ; Modify method of exchanging object ownership information 54 ; for network operations to prevent the drop of the 2 high 55 ; order bits of resource identifier values. A %U (UIC) FAO 56 ; directive was being used which caused the omission. 57 ; 58 ; X-7 RMM0001 Richard M. Marshall 14-Jun-1991 ****** File DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;1 52 ; X-7 RMM0001 Richard M. Marshall 14-Jun-1991 ************ ************ File DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;2 148 UIC: $QBLOCK <<[!OW,!OW]>> ; UIC control string 149 ****** File DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;1 142 UIC: $QBLOCK <> ; UIC control string 143 ************ ************ File DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;2 662 P1=XAB$W_GRP(R7)- ; UIC of file owner 663 P2=XAB$W_MBM(R7) 664 $CHECK_SS ; Check status code and exit on failure ****** File DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;1 656 P1=XAB$W_MBM(R7) ; UIC of file owner 657 $CHECK_SS ; Check status code and exit on failure ************ Number of difference sections found: 4 Number of difference records found: 10 DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.DIF;1- DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;2- DISK$RMS_DEV:[PREMOVICH.BUILD.FAL.SRC]FALBLDXAB.MAR;1 ========================================================================================== ************ File ROOT:[DIR.SRC]DIRECTMSG.MSG;2 2 .IDENT /X-8/ 3 ****** File ROOT:[DIR.SRC]DIRECTMSG.MSG;1 2 .IDENT /X-7/ 3 ************ ************ File ROOT:[DIR.SRC]DIRECTMSG.MSG;2 47 ! X-8 BP008 Bob Premovich 28-Jan-1997 48 ! Added FULLOWNERRID to display the ownership of a network 49 ! accessed file owned by a resource identifier as the 50 ! identifier value. 51 ! 52 ! X-7 MPD0019 Matthew Doremus 16-Apr-1996 ****** File ROOT:[DIR.SRC]DIRECTMSG.MSG;1 47 ! X-7 MPD0019 Matthew Doremus 16-Apr-1996 ************ ************ File ROOT:[DIR.SRC]DIRECTMSG.MSG;2 273 FULLOWNERRID " Owner: %X!XL"/FAO=1 274 ****** File ROOT:[DIR.SRC]DIRECTMSG.MSG;1 268 269 ************ Number of difference sections found: 3 Number of difference records found: 7 DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=ROOT:[DIR.SRC]DIRECTMSG.DIF;1- ROOT:[DIR.SRC]DIRECTMSG.MSG;2- ROOT:[DIR.SRC]DIRECTMSG.MSG;1 ========================================================================================== ************ File ROOT:[DIR.SRC]DISPLAY.B32;2 2 IDENT = 'X-19' 3 ) = ****** File ROOT:[DIR.SRC]DISPLAY.B32;1 2 IDENT = 'X-18' 3 ) = ************ ************ File ROOT:[DIR.SRC]DISPLAY.B32;2 50 ! X-19 BP008 Bob Premovich 28-Jan-1997 51 ! Modify method of displaying object ownership information 52 ! for network operations to prevent the incorrect display 53 ! of resource identifier owned objects. A %U FAO directive 54 ! was being used which ignored the high order 2 bits of a 55 ! rights identifier value. 56 ! 57 ! X-18 MPD0019 Matthew Doremus 16-Apr-1996 ****** File ROOT:[DIR.SRC]DISPLAY.B32;1 50 ! X-18 MPD0019 Matthew Doremus 16-Apr-1996 ************ ************ File ROOT:[DIR.SRC]DISPLAY.B32;2 377 DIR$_FULLOWNERRID, 378 DIR$_NOFUCREDAT, ****** File ROOT:[DIR.SRC]DISPLAY.B32;1 370 DIR$_NOFUCREDAT, ************ ************ File ROOT:[DIR.SRC]DISPLAY.B32;2 1678 ELSE IF .DISPLAY_BLOCK[DIR_L_FILEOWNER] LSS 0 1679 THEN APPEND (0, ' !#<%X!XL!>', .OWNER_WIDTH, 1680 .DISPLAY_BLOCK[DIR_L_FILEOWNER]) 1681 ELSE APPEND (0, ' !#', .OWNER_WIDTH, 1682 .DISPLAY_BLOCK[DIR_L_FILEOWNER]); 1683 ****** File ROOT:[DIR.SRC]DISPLAY.B32;1 1670 ELSE APPEND (0, ' !#%U', .OWNER_WIDTH, .DISPLAY_BLOCK[DIR_L_FILEOWNER]); 1671 ************ ************ File ROOT:[DIR.SRC]DISPLAY.B32;2 1911 ELSE IF .DISPLAY_BLOCK[DIR_L_FILEOWNER] LSS 0 1912 THEN APPEND (DIR$_FULLOWNERRID, 0, .DISPLAY_BLOCK[DIR_L_FILEOWNER]) 1913 ELSE APPEND (DIR$_FULLOWNERUIC, 0, .DISPLAY_BLOCK[DIR_L_FILEOWNER]); 1914 IF .LINE_DESC[DSC$W_LENGTH] GTR .DISPLAY_WIDTH ****** File ROOT:[DIR.SRC]DISPLAY.B32;1 1899 ELSE APPEND (DIR$_FULLOWNERUIC, 0, .DISPLAY_BLOCK[DIR_L_FILEOWNER]); 1900 IF .LINE_DESC[DSC$W_LENGTH] GTR .DISPLAY_WIDTH ************ ************ File ROOT:[DIR.SRC]DISPLAY.B32;2 1921 ELSE IF .DISPLAY_BLOCK[DIR_L_FILEOWNER] LSS 0 1922 THEN APPEND (DIR$_FULLOWNERRID, 0, .DISPLAY_BLOCK[DIR_L_FILEOWNER]) 1923 ELSE APPEND (DIR$_FULLOWNERUIC, 0, .DISPLAY_BLOCK[DIR_L_FILEOWNER]); 1924 END; ****** File ROOT:[DIR.SRC]DISPLAY.B32;1 1907 ELSE APPEND (DIR$_FULLOWNERUIC, 0, .DISPLAY_BLOCK[DIR_L_FILEOWNER]); 1908 END; ************ Number of difference sections found: 6 Number of difference records found: 20 DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=ROOT:[DIR.SRC]DISPLAY.DIF;1- ROOT:[DIR.SRC]DISPLAY.B32;2- ROOT:[DIR.SRC]DISPLAY.B32;1