[comp.unix.xenix] Xenix 286 crypt fix.

ag@portnoy.CTS.COM (Keith Gabryelski) (04/02/88)

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@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
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
# >)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
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
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@T)D)N1F@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.@RA
MN70G&@ HF0.;SL4!,(-X#UO]*IX?HUN 9Y(Z#*&Y="<J '?#Y(G#._^#1[1R
M.4>)R(EZCO@2#V"*'\1$<[<!&_]]:T/8$ +8B@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@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-@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@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@OUM\DW:+(X'W@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@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@YG6GMT6#9\DYU9"Q!;#QE;</);;?U;9,1;6-%;
M5:1;3*E9N+!;L[A;KXQ;HY)9F'=;G419R4R22EMQH%MLLEMEO5E9@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@portnoy.cts.com      ARPA: crash!portnoy!ag@nosc.mil