Xenix 286 crypt fix.

Keith Gabryelski ag at portnoy.CTS.COM
Sat Apr 2 10:30:30 AEST 1988


See previous post for an explanation of the bug and a test program.

This binary patch is for 286 SCO Xenix users.

I could have just as easily posted just the new crypt.o, but to avoid
any legal problems I made it so that you have to have the old broken
crypt.o in order to get the new one.

The bug was found and fixed by myself Michael Ditto (ford at kenobi.UUCP)
using only our bare hands and adb (Well, with some help from M-x
compare-windows, etc.).

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	ORIGScrypt.o	(A copy of the old (broken) Scrypt.o)
#	ORIGMcrypt.o	(A copy of the old (broken) Mcrypt.o)
#	ORIGLcrypt.o	(A copy of the old (broken) Lcrypt.o)
#	NEWScrypt.o	(A copy of the new (fixed) Scrypt.o)
#	NEWMcrypt.o	(A copy of the new (fixed) Mcrypt.o)
#	NEWLcrypt.o	(A copy of the new (fixed) Lcrypt.o)
#    The new [SML]crypt.o will also be installed in /lib/[SML]libc.a
#
# This archive created: Fri Apr  1 10:17:23 1988
export PATH; PATH=/bin:$PATH
if test -f 'Lpatch'
then
	echo shar: will not over-write existing file "'Lpatch'"
else
cat << \SHAR_EOF > 'Lpatch'
begin 666 Lpatch
M  ( #@        R#ZPN(!P!-4VT03LMKB 6?1=('Q4N("9],TP4.#Q)1V!^(
M")],TP4."BG+;8@&G3#Q?X;9V98U!D1!%@@''U\37AH"#0\ :Q<+4 87$$%&
M$  $41Y !14514$"&P]6%TL1$0=77    *#:5%,*7P0#+.QDFP,!"= $!4Y1
MP9T! ?*8!P=/ 0J?  %"\@,(06N=D@$!FV4+_P8  :F8\@)6GPP" @("!D( 
M1 at 6 C7<!RM-M86DM*Q00%Q!U=#H797,T%AQT8SHF8V T+!<#:W4K"')_+Q=R
M<2\1;FLM'!X7<JK0. /1H%0Y,"HB(" @("8F)B8@(" @(B(B(B @("!>+CXN
M8" @(!DI.2D@(" @(B(B(B @(" F)B8F(" @("(B(B(@(" @-Q\_%Q 0<# ?
M'V\O$! 0$!$1$1$0$! 0$Q,3$Q 0$! 1$1$1$! 0$!<7%Q<0$! 0$1$1$1 0
M$! 3$Q,3$! 0$ @@$#@@(" @(R,C(R @(" A(2$A(" @("<G)R<# P,#(" @
M("$A(2$@(" @(R,C(R @(" ! 0$!'14.!@,#   #     P   PP3"1D/% @$
M#@,6%A at 5&0X-&QP# 1P=!3(@$B<& P$-'!H_&!\<!@@.! D2$!$S"A(E'R,D
M! 8& @(,# X. @($! 8& @(<'!X> @($! 8& @(,# X. @($! 8& @(\'! ;
M+0 ,"P8) 04-! 8#!@L%!@<##@T*!00$ 0H# P\##00-  D'# ,""@L,# 8,
M!PP&#0(+!0D% 0(""0\+!0,% 0X#"0H+"@\, 0D%!P<'#PT!#0P/# D# @D$
M"@D*#P8'# X*"@H*#PP!!PP+#@D$"P at .#@<. P@) PX+ PD%"@4'!PP#!@L'
M#@,""@D.#P8# @$. P8# 0P#! X#"@\!#0L(!0D'"0,. 0P."PP+!  #!P<#
M!0<"!@8$#PH,#PP(# \'"P<) 00!#PH.# H&! \*"P<+!@(( @\%#0P%"PP'
M"08-#@T#"@0#"@,+"@8-" ()#@T. P4( P4#!P4."P8/!08/!P\/" D%!0T&
M PL,!0H,#PT!!P(+!@D'# <+"0T.#P8#!00+#0D*# L-"PP)"@8."@<! @0,
M"P4*!@4/# 4## <)#P4,#@H&#P0( 0D- PT' 0T$"P8*#@8)!0P-"P8#!@4(
M" D&#0\,!0X)"@T&#08""PX-#0X)"@(+"@,+"PH## P!"@8&#P8("@T&"0D*
M#0H*! 8,# T* PL#"PT'# ,&# $&"@H/"@8.! H'#P</" $*" <' P,#  L(
M"PT#!0P&" \/"0\)! \!#PL,"@P&!@$/# L/"0<%#0,.!PH#"0H$#P\%#P4-
M @L/!@L&"@L& 0T,"0\+$P(2'@T+" 0< PL+!!T($ <:!P0B$QL',Q8=#P4&
M&A]5J[P:V0, 57/ON AE!@< STS(F6-I9R1F YF+V%;5ZC9."+R*1_^(TU8H
M? X8@)@34]M=6(C(3BZLS;AW#)@#10EZ@'Q(H"[$&/Z.1N,;*D?\$ U:_6U\
M=)E]TZ-SQT6_ at __P05**168K7?V+XXD=B$5VKO^)PI[\D_GNB0%]70!_4I9%
M9BMQ_=2Y<@^9NX@=)T6__$8P at W@/COXZO-MUP0>(#W"XJ#NQ%O1AHW:*A4*%
M>(M  5]UA73*,_BXQ^Y\- at -1B(F2A:>#9Y.D0,%\_)NUN]EQ",5]4 at QQ&(C#
MN_Q>_S1V_PQ.(H@,+#0+U&==5\O/B^RX#%?,*_^*A5=6LW12AEX&%LW0)=1!
M<<Z-KHD ?'?%I.: Q0% ?&:Y3/YT"#MQ"BLR]E,,BVVX=ZWYH+ET#.[YHWH\
M'0N V:I]>JY'NW>#"$Z&9/-U.3  ?*9P#N")&8O8N4<MAM".4(B?@.%\?U,M
ML;L@,K at 0 WT"AXV 9^&<!,MT<(R$/.P3(6H/78D<> =+:U-#2S6(T'O2.(@*
M  !'  !@Y ( B    $$  #A;)VO;4TLUS]![ (9_Q&L%"VJ'4(D?F01+:44N
M 7,] 4OE:8 at 422+2:(>PB0QN]TEQEPZO]CF&NN4Z124IW"6)#+QIB,RP)]S0
M<*!JB\.Z_(,[]3B5VRIW#K\KB=Y]_(L/XS at QP@O\@/BKZB!\U-^X^6/\  #0
M !"C @K,6\VO2_$[6+* 6'89.H 6RX+*U'4/#;N;3^["AHZ+B<(+_*NZ9WKN
M_<3] 3 !YL(N=*Z_Q(;#VZP-AIM/KL(XQ )A"?Z$8J%=>0/DU at V1E:"[+HB;
M1X/_("N/  E, 6@$F,U;=,6K]N^H[00+_P?^U&N#8ABA,N-=X)I8%)P)B!XH
M!$=&U*DLBB_"UT(&@MWX9/;RLW^MW(@^-:V3 _N5%F2Y!@ K3!?\#_=.    
M1P   44 '&T)@EC.H4 LK(V?$<^X]4HS+C"L'!K3Y/Y:?@0 JOHM=;AZ$7H$
MQ>T 1?^;U=BA>W-&=@^7T+XK_T1+2BWV,["!)\R+'HF?$<^^1HQ&"68/P(X"
M+OW1MKR%;@GH"*9VL$8'"2@&C$O6^"[<$0">=@*?T+\K_G)+ $"#">SW7*%W
M<\/(,6[\IE::]^Z+V E%=D4(-J%ZZMP83)YVB5 at H=9>>=7"^!O<995-2":%T
MFT[% 4'_1T#_%H$Z>@5U53YIQBR'6*Z=@W[^6OW A0!]^),Z%*-RW4*X at _X@
M at VV@>J(" '?0DMR*.+3?F,[W88 O8,'>=T0_8>'4*/O^+)M$>&' K>$Y>^'#
MD=DXY!6 .Q=*H%)$14N4NB590FV;SNUH&L)2ZL#KA<*=AL*J R(U6":Q6!N)
M6!&-6!296 Z=6%IA4+BAF *0  *[  *   *   *+ @*L  -U  -F @.F  ND
MR<>O5%J0,%J4$EJ%')-&6:VN6:2P69>568UJ6XYPD#M9'H)9$H1;>959=)E;
M;F%98F=97W9;5GU;0DA;15=;L2M9M3I;HP5;IAQ;DN=;EO!;C/M;\LY;X]19
MY]I9U*-3PFZ<1H2(Q1PIQXV99/^9;L12N]R[$Q[LP$].P ^K \Z:6\T,6<(8
M6<<?@%10G\1QF)L5^K (^KU7G\15P*<[YK1#^<8FE9M'\:=CY+QSL ,77X4"
# >)W
 
end
SHAR_EOF
fi # end of overwriting check
if test -f 'Mpatch'
then
	echo shar: will not over-write existing file "'Mpatch'"
else
cat << \SHAR_EOF > 'Mpatch'
begin 666 Mpatch
M  ( #@        R#ZPN(!P!-4VT03LMKB 6?1=('Q4N("9]-TP0.#Q)0V!Z(
M")]-TP0."BC+;(@&G3#P?X39VI8U!D1!%@@''U\37AH"#0\ :Q<+4 87$$%&
M$  $41Y !14514$"&P]6%TL1$0=77    *#:5%,*+ 0#+,QYFP,!*= $!4Y-
MP9T! ?:8!P=/ 0J?  %"\@,(06N=D@$!FV4+_P8  :F8\@)6GPP" @("!D( 
M1 at 6 C7<!RM-M86DM*Q00%Q!U=#H797,T%AQT8SHF8V T+!<#:W4K"')_+Q=R
M<2\1;FLM'!X7<JK0. /1H% Y,"HB(" @("8F)B8@(" @(B(B(B @("!>+CXN
M8" @(!DI.2D@(" @(B(B(B @(" F)B8F(" @("(B(B(@(" @-Q\_%Q 0<# ?
M'V\O$! 0$!$1$1$0$! 0$Q,3$Q 0$! 1$1$1$! 0$!<7%Q<0$! 0$1$1$1 0
M$! 3$Q,3$! 0$ @@$#@@(" @(R,C(R @(" A(2$A(" @("<G)R<# P,#(" @
M("$A(2$@(" @(R,C(R @(" ! 0$!'14.!@,#   #     P   PP3"1D/% @$
M#@,6%A at 5&0X-&QP# 1P=!3(@$B<& P$-'!H_&!\<!@@.! D2$!$S"A(E'R,D
M! 8& @(,# X. @($! 8& @(<'!X> @($! 8& @(,# X. @($! 8& @(\'! ;
M+0 ,"P8) 04-! 8#!@L%!@<##@T*!00$ 0H# P\##00-  D'# ,""@L,# 8,
M!PP&#0(+!0D% 0(""0\+!0,% 0X#"0H+"@\, 0D%!P<'#PT!#0P/# D# @D$
M"@D*#P8'# X*"@H*#PP!!PP+#@D$"P at .#@<. P@) PX+ PD%"@4'!PP#!@L'
M#@,""@D.#P8# @$. P8# 0P#! X#"@\!#0L(!0D'"0,. 0P."PP+!  #!P<#
M!0<"!@8$#PH,#PP(# \'"P<) 00!#PH.# H&! \*"P<+!@(( @\%#0P%"PP'
M"08-#@T#"@0#"@,+"@8-" ()#@T. P4( P4#!P4."P8/!08/!P\/" D%!0T&
M PL,!0H,#PT!!P(+!@D'# <+"0T.#P8#!00+#0D*# L-"PP)"@8."@<! @0,
M"P4*!@4/# 4## <)#P4,#@H&#P0( 0D- PT' 0T$"P8*#@8)!0P-"P8#!@4(
M" D&#0\,!0X)"@T&#08""PX-#0X)"@(+"@,+"PH## P!"@8&#P8("@T&"0D*
M#0H*! 8,# T* PL#"PT'# ,&# $&"@H/"@8.! H'#P</" $*" <' P,#  L(
M"PT#!0P&" \/"0\)! \!#PL,"@P&!@$/# L/"0<%#0,.!PH#"0H$#P\%#P4-
M @L/!@L&"@L& 0T,"0\+$P(2'@T+" 0< PL+!!T($ <:!P0B$QL',Q8=#P4&
M&A]5J[P:V0/X5N)POPC'T)_'2)^H]OKUBX2 51-G8 M>G(I'_XC35BA\#AB 
MF!-3VUU8C,VX=PR8 T4)>H!\0* NQ!C^BD<4M20< -X*N.)7)Z%SQD5PA0#H
M>B/_&.1[S+C579&&H1^+'8E%N:@ D?GOB<Y[OAA$(^,8Y'O,N-5=O8;B17 /
MF+M'&\1=A(TS;0$HLLO_WG-2#C__FK".0$^YW!$!74")F(M2#V?_F@ 0,K?_
M]65#8+B)]^X!76B)@(N?"7CG?D&..\X0BNUBJ7>B[HK#>_^0^/)%Q7WN37\;
M+Z#5NM8N"$"Y,^:XE@":  !75GRIH7J*A9B+0(B&!=1!=<]Z (:?@+C#@ZF[
MKSE&_H-^BWY\",P'N"1&U:W]8$5US[AS;06A>B,=PH9R L\&1R,[<=3?Q, K
M"-;*BR_D>XO8 4F*A;/+$@Z ,1<LVXN3@@!US "X\54HN#OY,(LUH \R at LKT
M=UH06V0&RQ(US]!X6B@!5 &'4=)X  @!13L 2S+C">-14 at Y)BILIC8T4B  !
M17D 2U(&C10  HE<1H<0 $ ZPF+FT#B)7 :$L )  H%'C211 0ML-BO28*U'
M?@^?LHF5$&#[ @      40       /7YK(7BA[-%?6+W67Q/ L\'Q0OW11])
M_J-[L89O@&>#I8EN /P9>@,=P(8BAF^ 9ZIU;//-!;+[B);/BXM.Q'S?7(X<
M;0$)^T83]AVAZ'8JN EZJ']H=+9T!M;]F/B+ZE$XHWHC'0^ =2'D;MMTE,]#
MBID QL*$#P( F(V62T0+_@?_%7XC5LZB0=#+[""#V!"'UP.+"5"C]X$'UT1\
MK-VAR9FHX*- at SCOV0.<J*_^+$:B2\,:OY]?X8H)VQE3Q;+!HW82"J3O5;?D 
M&/@S 9BBB2WSY'19/   %]R#_P=\:H+];?!-VBZ.!]X*N+QW-5XG,W8,K]P(
MB@>8"H+\H; X#*P<!,7] !@"\:B8=()[?G:])@?%[0 W_YS5V*"A@[FX at T74
M8"%'BKW^^(AS]H];]']B?9P** :^A7X)U_7<">^N! BF1B at K"&7-)@-&Z_LB
M1XR\<+X&]QEE4U()T5.;SL4'OGJXL6UUVO8$6_6@".B^*/.^$=B(B5B 3D*^
M"#:A>NO<&$R>=HEP*+A2F?C$OD9T$(FD#ZK>+UA9_M9#TV4&?.B#Q3HJQ?T 
M( +OJ+ Y07U^_G&!U>6X1@"*L1 #7)"%;H=F CI"@0?E GQHO5_Z+O9X7B%Z
MIII"1A^'(*'1FUE(LF+BBH%2%T.SFX$E8<S<(P$?A<.1'_EQF\\S4*7?1CW>
M*B??&L&8FGJ:R4]:-I\!<P ):<G%>3A8?Q-8<O589/^1 at EF)P) Z6IVL6(&R
M6/&V6.R]6-V562V9615E60EK67IM47&]GP-L  -&  .[  O2R<9ATEI>UUA+
MI5A$K5BWLUBNO%B;EEB,FEJ#:%CZ;%K\=5C@>5CD2%LY45LJ7E, at X)P!<@(!
M7P(!/P !VP !Q0(!P@ !P  !M (!1P !20 !1P !?P !3P( MP  D ((GLG'
MA2A;ZS5;YCY9V@!;U0]3P]V>K.^YQ'B>PS/LH1STH2>?Q%N9FRSMO3OKG4.?
2S'#ZJD'OO6[K&A&=V(U4 ZWD
 
end
SHAR_EOF
fi # end of overwriting check
if test -f 'Spatch'
then
	echo shar: will not over-write existing file "'Spatch'"
else
cat << \SHAR_EOF > 'Spatch'
begin 666 Spatch
M  ( #@        R#ZPN(!P!-4VT03LMKB 6?1=('Q4N("9]3TQH.#Q)6V!B(
M")]3TQH."B;+8H@&G3#N?Y#9S98N!D1!%@@''U /41H,$5P72P<*01I!'A  
M4 5%$ !1 DH-'!I7"T8,$5 14!%LRSB8+ZHKP <"@)ELF$](2TD%!,29N9A/
M $@'!P8-F0V83VI,8 at T)D)N1F at K_ 0 '  :IGEN<#0,! 0,# 05#!04 A8WR
MC#A?53X\$Q<'!Q 796-?=#H'#A$297%?5SPW"!L?&'1M7V4M&@(-<'Q?;3$&
M'!H"#7"GH)^C4@,".C(0$# P$! V-A 0,# 0$#(R$! P,! 03CYP$! P,! I
M.1 0,# 0$#(R$! P,! 0-C80$# P$! R,A 0,# 0$"</&!@("'@X9R<("!@8
M" @9&0@(&!@("!L;" @8& @(&1D("!@8" @?'P@(&!@("!D9" @8& @(&QL(
M"!@8" @ *! 0,# 0$#,S$! P,! 0,3$0$# P$! W-Q 0$Q,0$# P$! Q,1 0
M,# 0$#,S$! P,! 0$1$0$ T% P,      P #      ,,$ 4)"AT"&0P:&@P"
M&1L7%@P*#PL3%A8D-C81,!(Q'RT%$AT- 0L)!0T,'QP.+P0](2("!@8   ("
M#@X   ("!@8   ("'AX   ("!@8   ("#@X   ("!@8   ("/AXN!0,%#PX)
M!P@"!08#!04.  @'"PD& P,'!P8-!0X*#0<)"@D##@\-#0<&"PH-!@H*# <.
M# L%#@0,!@4)#@P-"0P'#PX%!0\* PL*#@T)"@8'!PH+!0<,! X-"@<##0P+
M"P<%#0\'!0@)"0X%!0L,#P<'"0D.!PT/! P*!PD.# 0) PX/#0D&#@@-"@<#
M"0P/#PT. PT%#@0"!P8)!0,* @<)#PP&"P\( 0D-!P8+#0\-# H+"0X.# @*
M# 4&"0D% 0D.#@4)# @("0<#"0\#"0<&#0T*!@P$! 8+ P8/ P0/ P8%"PL&
M" P,#P8,#08+"P,)"@<'"00,# \)# X)  (&#0,+# P# PL*#@\#"0 "# <&
M"PD&" $*"@P#"P\,! 4)"P8-!0@! PP*!@8-"P8'#PT) P,$ @8&"@T/!PD"
M!@X##0\*!@4#"0T#"PP/! X- PX."0\$"P\-!0,#"@8&"PT-#@L+ P,*!0<*
M"P\%!@\+"08/! 0*"0<'#@T,!@8%#0X'#0L!"@L,#0,+"P$&!P\.!0,/"0L/
M!P,*"0D""@D'#@L-#0$,!P8-"0</"0L## P+ P,""0H.#0T.#@X%!@X+#0X!
M" D'!@X)!PT(# <'"PT'"P$*#@8%"0P."0,*#0T'#@X$"@L%#@H+!PD,!@H-
M# <' 08,"@4%#A8,!!()&0$='1X6%1((&A@= AH&.!4C$A $#0L(#1(21[EV
M /D#:<F,[']"GR](GZCV[/6+A(!5$V=@"U[LBD>HWJ_VB0X$G)@34]M=6H[-
MN'<,A!^)PA_^A/< **C#S+__B&\AHT: 9I4Z)@ )3</Y XAN/:-'@&>2. at RA
MN70G&@ HF0.;SL4!,(-X#UO]*IX?HUN 9Y(Z#*&Y="<J '?#Y(G#._^#1[1R
M.4>)R(EZCO at 2#V"*'\1$<[<!&_]]:T/8$ +8B at UZXHM0,^B*<!&)4T Q, !]
M:VO8$ + BL!\_9.T<G:#"?[VVV'XYRNQ"7O@?$+"N_U6_OW9#0T         
M    !@                              4                       
M                       !F^(  H1PAO^ N*.#TE</D\^XQVX-Y2(!68J!
MB\@!3;*&P(A N5>D'<*.^DRX"W*X?YJH (AZVMP0,_:*<R6(:%MD7.,3>8Y7
M*XA06V0 TQ)5*8A( 5P!PBG2,S+C4]M0#@W.FQ'O\%@XB!D[AQO at F^_QT#H 
M    1   LMU8)[+>662/VQ*$\(I?.$ E:_1IB%3.L)M:OM**?S5JT&WW]0( 
M]?FLA;"'XD5]EPX       !3  $  /7YK(7CAWV =4Z+)^CE>Q#\S0;7"^6(
M,>UX3/RYF\   @"  -\)]JNDU:3(B0[F28L- at 43$?-]<G]D S'L[?74.-0!A
MZKFH *KY>/S>=7/T>[A^BVQ2_: Y YO@ ,V"9ZN,;C6UB0]!BX;#VP*&#,4 
M0$Z+B4;$?+]<EH-T=&_8 at U439V""AS\#BPE2H_>!!]=$?*S=H<F9J.BC8,X[
M]D"5*BNHW6T(?X(H+\^5>]I#]'$#\JQD  %' <-M ,U"=><"BBQ76K[:"DCQ
M^;QO0M,7!WQJ at OUM\DW:+(X'W at JXO'<U7B<S=@*OK@:*A%R+;0A,PM:,A%Z'
M?3R"KU7R">H&!@OZICHXAWU>@O6HF'5P+0#-0'2,5UJ^5HLRR3""&/-M]2;0
M_SR ]G= >\;X.8GJ"+9TAM-M=>:3^8NQ$  76W&0 OYQ0(W(3^B++V0*@(L1
MV46_._D&BU;-6W2##(:@/I/&4$_&CXA at B5B 3D*^"#:A>NW<&$R>=HEP*+A2
MF?C$OD9T$(FD#ZK>+UA9_M9#TQ<&?&M'0KBM?6>"U%7R1   !X-5 8L8^CM 
M_O%DS28"!3( WHJX]3L_.8)F[(/&P#>'?HL_WAR'Y.<#.V;Z!"&/9AL]IA:B
M_D\FA</9'#F7XWM0&]V5GT>YAL->ZH&>3@%E(YM_/IN9210B5%RZ9GO&#219
M:2<98N.= 0X  2P  <0 02O)A)$4F@%H @$0  $&  $'  $-  #E  #*  ,R
M @-% $- R<<A-UH>$%H)\EI"^I.T68X\6X$)6?,46>OC6>WP6=KY6<#$6<39
M6C;?6BJD6B.H6B>\6A:"6 at YG6GMT6#9\DYU9"Q!;#QE;</);;?U;9,1;6-%;
M5:1;3*E9N+!;L[A;KXQ;HY)9F'=;G419R4R22EMQH%MLLEMEO5E9 at UM4D%D-
MFI)^AE12G\1KF)L5^K W^KU9G\1+P*<[YK1+RL8MEYM%\Z=NYK1[080'3(EI
#D"1T
 
end
SHAR_EOF
fi # end of overwriting check
if test -f 'xorit.c'
then
	echo shar: will not over-write existing file "'xorit.c'"
else
cat << \SHAR_EOF > 'xorit.c'
#include <stdio.h>

#define DEC(c)	(((c) - ' ') & 077)

#define xorit(ch) putchar((ch)^getc(orig))


main(argc, argv)
int argc;
char *argv[];
{
    int n;
    FILE *orig;
    char a, b, c, d;

    if (argc<3)
    {
	fprintf(stderr, "Usage: xorit <originalfile> <patchfile>\n");
	exit(-1);
    }

    if ((orig=fopen(argv[1], "r")) == NULL)
    {
	perror(argv[1]);
	exit(1);
    }

    if (freopen(argv[2], "r", stdin) == NULL)
    {
	perror(argv[2]);
	exit(1);
    }

    if (scanf("begin %*o %*s "))
    {
	fputs("xorit: bad uudecode input\n", stderr);
	exit(1);
    }

    while ((n=getchar()) != EOF && (n=DEC(n))!=0)
    {
	while (n>0)
	{
	    a = DEC(getchar());
	    b = DEC(getchar());
	    c = DEC(getchar());
	    d = DEC(getchar());
	    if (n-- > 0) xorit(a << 2 | b >> 4);
	    if (n-- > 0) xorit(b << 4 | c >> 2);
	    if (n-- > 0) xorit(c << 6 | d);
	}
	if ( (n=getchar()) != '\n' )
	{
	    fputs("xorit: bad uudecode input\n", stderr);
	    exit(1);
	}
    }

    exit(0);
}
SHAR_EOF
fi # end of overwriting check

set -e

echo "Extracting the old [SML]crypt.o from [SML]libc..."
ar x /lib/Slibc.a crypt.o
mv crypt.o ORIGScrypt.o

ar x /lib/Mlibc.a crypt.o
mv crypt.o ORIGMcrypt.o

ar x /lib/Llibc.a crypt.o
mv crypt.o ORIGLcrypt.o

echo "Making the patch..."
cc -o xorit xorit.c
./xorit ORIGScrypt.o Spatch > Scrypt.o
./xorit ORIGMcrypt.o Mpatch > Mcrypt.o
./xorit ORIGLcrypt.o Lpatch > Lcrypt.o

echo "Installing the new [SML]crypt.o into [SML]libc..."
mv Scrypt.o crypt.o
ar r /lib/Slibc.a crypt.o
mv crypt.o NEWScrypt.o
cp ORIGScrypt.o /lib		# Save a copy for future reference

mv Mcrypt.o crypt.o
ar r /lib/Mlibc.a crypt.o
mv crypt.o NEWMcrypt.o
cp ORIGMcrypt.o /lib		# Save a copy for future reference

mv Lcrypt.o crypt.o
ar r /lib/Llibc.a crypt.o
mv crypt.o NEWLcrypt.o
cp ORIGLcrypt.o /lib		# Save a copy for future reference

echo "Cleaning up..."
rm xorit xorit.c Spatch Mpatch Lpatch

echo "All done."

#	End of shell archive
exit 0
-- 
[  Keith   ]  UUCP: {cbosgd, hplabs!hp-sdd, sdcsvax, nosc}!crash!portnoy!ag
[Gabryelski]  INET: ag at portnoy.cts.com      ARPA: crash!portnoy!ag at nosc.mil



More information about the Comp.unix.xenix mailing list