klamer@mi.eltn.utwente.nl (Klamer Schutte) (05/07/91)
Here is the code to do #!script execution in the kernel. All you have to do is patch mm/exec.c . Recompile exec.c, link mm, build minix.img and you are there. This version is for the atari. I think it will run OK on all machines and all minix versions, provided that you adjust the macro ALIGN to get proper alignment. (Will be different on minix-sparc!) Beware: there is no documentation in the uud. part. Keep this message! How it's done: in read_header the program is also allowed it it starts with #!. The following 29 bytes are broken into (space-separated) parts. These from the new, additional arguments. In do_exec this causes a redo of trying to find a program. The new found program is the first (zero ???) argument. This is allowed only once. (To prevent loops!) In patch_stack the original stack is patched so that the new arguments are inserted in the beginning of argv[]. Note that the return value of read_header has changed. Also it has additional arguments. Setuid scripts are not allowed. The setuid features from the interpreter are honoured. Bugs: Probable. See this as a beta release. Especially out of band data and overflow is not tested. Klamer (.signature at end). table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 exec.c.cdif.Z M'YV-*@*"B.$B1H(8.7+$> &C!D,; VGHF'%#1PT:"EIH!%$&3YDQ+L8<3+BPz M(<,; V?H@*$RA@T% 6/*G*D"IL 8,EC$0"DSXT:<+&2@U*A1 8BC*HZ"H(*Fy M#(@W;MCDX>B&CIRI<-ZDJ0HBS1P09-Y\Z?C1A5&D+\XJ6 'B14VV()*22$)&x M!T>/(,>PL#/0A8R!)!DZA($RADH8,G30@+B&39@V9>2 *(('#@@2:Y%FCGN9w MR9LS=LGFW7MY<U(I9>QX30.U[U_ "@6?/&IX9>+%1QL_CFP:1!@R9,J0 3$Bv M! @X<MZ,*3-GSM8S(.B\B=X4Q)K(;LJP,=U;3NK5K0G& &&WS=8T>%K,H0/"u M3F3GX5W4* C#Q0S3:>&>';%U#)LZP8$@0AMMN("&"/OU]U^ /,R1QQPOK!<&t M'0;ZD* ;_@'H% _FN8'>"V.$P08;;LA1H4TTI8CB0#@$-4-<,?G4 @@RM$@1s M"$2U<&&& 0Z(G'(&(G@4?Q@NZ)0(<(0AQV-!JL46?V:X$9P9(#A1!1-,9#;"r ME%N5D8"56"8 @Y9E2)F&&9DE2&423E!1!!-?S""#$$E0,<5^7&8'0A-!')'$q M$$J! ,>,<!@*$LPQ)#ED-K-40:**<ZTX@PPL#!##C &)",(--# 0@U#$85Gp M&69TN=035 @1Z*JLVI" 6R"PH=R$K+GQ%)72T2$B",[IX=16(#3U6V1QI35Do MGDY-D443JK+J+ @WO)J4K"'24>NMO.;1AAAOL,%K&KYV9:NPP4FF@K$@9 8Kn M4UYU]14=U8F8QAEN0,:5&6](%@:-((B1!QU.R4NOO>RU$<88:)AZKI;()A $m M$TD<X00*>*20 ,4I@- #""AT7#$(;,60L0D@^"'R#FD>9<034EP1A!1$M*?5l M<++^]H6C9Z"0 LHJL^PRS.*RE]T=7T#6ALX\@[!RRR_';,?,QTV(\!=P6(7Tk M64O_'/-6['EG,[F17<U6UDVWEX8<7_@+\%=)TC&UA&.L<?51:G(\!!))0*'Qj MQDW8@,.A*6#M<]E<@^ =M1.6<76D*L8$@@TY^9UI342!\#<+.." HZB!RNH&i M= ZVD?:_S"5]E&IH^Y=&W%_-,8;IO%I5QQCL25A[VG68@3)<(""L9 (J_$;&h M%TJ>,<<62! AQ1=3)*%%$2_(T 4+OLEA/.YF(*\\\\X7,3T()1)O_5<;PY#Tg M9KX!)[[Q6\#0A<8<^VYN"F R 3NL1$PWQQN0M2<O&6F@PU00]I$US,$%Q3K+f M4>30!LMLK(&P6\\:1K<V^*$ =11D3L;@-D&UE0Y2C-.4XVY0 \S!8'*;RD$)e M"S6>'"G0</ SVA?&\ 8XY $%=T##&ZA'!.JAP'-GV* <]+*G)GP!"E)XPA"^d MX 0I\-"'0,P8&=8#1:@$\2X?^0(;RK2S%YZ)8Y()P<:>L(2,>8<.=9"#&U @c MAYU)"P2EVB+X=@.^-[ '6'5PE&3(,*%]X8Q@"0P4P$;T!3/, 05W(T(2G B"b M'.Y04-2#@1MA!; &YDM):9 *K^X00(1%9SIYC,P)O@) [] N7U-9&%NLD@?Ba MG2$,6]'!"\TPG(V)2%9W$ X*ZN "-^P&>]0SP1R "0(L?(%.5)AD4MH51Z>(z MI@ZZ$L,6?Q!(I0R2#84\9"(7&4GJQ2"2RMQD)]'0KX.MX9-%'.53[F"K4GY$y M.E>IYE&^B ):@H '@C)C&="HQGJ2(9S-;&08ON(&.V)Q#- ,@S2=LK 02LIQx M.,A)#E[4DT#!"C6_H8Y3 @HV?4GI+E8Y&'O@Y90_EJEVX&(. A<6*-=94((9w M_ I;A@"Q(2R!>\_#T4 RY@,?@("F?[KI%/!F!"K K@WP\]KP.NK/8)J!#L$$v M&![H$--@\E%7506!"<30G*PJP#@)"*M839"KK I36UEU71>-,T\JH0"I^)0Du M"/9PE@3XYPV.\J<;W[@_R,#K.8U,SN<:&4!R=K2:"3AC&M=8!"<\H0A8*,(0t MNABH/GPU719-BA'VZ4F2QLZ<<$P.4CT;2LF(@53Y<DIPUI.</ #6L]T:#@V]s MTQ6#G:$,*T774>8P1 MBT(-SV*"NXD8UJ\!NBNS9V 7/%M.,;2MW**M<H6:@r M$X1LKBB9!0%&A^-9CI9A6!X=3D="2CN-\JH,9P!DKU0J3UZ-X:5TZ"#I9/K3q MF@JU>SH5&0AZ6M^@,H^H1GTA4C>FU"\PE99.A:I6I4I5X%JUCV;EZC =G"ZPp M)H"L=C1KZ-)*1.&M;P[4*]Z$<[=6I=!SP!MK0:'D2M>CV%56>:7E7F'5UWTFo M;+!W$"QT. FO8'VW7(A5;#\;^]C(3G9W2ND#1]C@J*ZX%:[YG"OZ7HQ7Q<D8n MR0E@[1ALN,M>_E(,N6.!AT7<OBYTD2T)")^(X3>C-NP@K#0.@WNZPAY5*B4!m M9[#C=%CI2EBZX<U\S==50CPB$.3A#74X3AJ]0H>O[* %&6-IDB]+M^QNUFWDl M]"P'0\L_\Y:V7ZBE[6JM\@;7#A:V;)!M:FL;AMOF]H6\?:]R?SM?X9JSN'(Xk M[GI\RUS@.A?,N@-A"%>4@QOH!#$HE*X,J&N8%G(.!(G=YV)14(0@#&$(19@"j M92=--][14\WC"QSOLAS?F,*O;6\;KMQ \%PSA%A](J8>N(U'/9@"%P09P_(+i M816$$<T*8. KPQW8788VH-(W'SW<=YL<6X(;_"H(5!IZV!T&RX3AH]>T#G:Th M\^I 269C0RM:P5' X*Q>-0Q9E7!:RTWALCJXKF(5*R_U( ;J/2^)0JB"$7!:g MA"XZM">.B\%B= (J%'I<VOTDX[8M6VG,MD4%/8BZU*=.]:I;_>I8S[K6L5X3f MI:@@Y@7N:,Q7U76D;/WL:$^[VJDN:20FP0I!<%/0#/=C _\X; B&HX)+3N&3e MI[RK%+YLS,,JR Q3>,.''T/@YGDO,@ :SDD)Z&K'((<T5"U?<,2\4@$K&CAFd MDJ'H*IP*GOIX6,'!,<M!IY!M]53PU6%;Q)(TK2NH K[/%]"F1[U3I$-W?MJ*c MP=\*U\*D2\*@T.!%+CRZ[U&@]*0Q/5UL<<O:IT_]ZO?@+4B).;K1<#-UCSU0b MV(^+]<=/?J[G!P1NA[O<9\^<J&&Z^^9$ ;N!'6+KV:'^9R"BO>>+[\S(#WCMa M1CT!43QV@&1<DP#%\SJ9P7YS0&[RM39(1E>\ RM7X!1K4% #AP9RMGOZ8RUQz MTP+ XEE)(@>-QFFC51W%<1S)L1S-\1ROQA;H ROH$Q<)P!1.,32Q$@:'!DWNy M(DN\0X,).(-?AX,$6&8XXE-%Z 9=((0)T'!%Z#Y'6#UG8 =;H(1,6#],V'!Ex M8@=P8(0MX%-;V(56^(-?QUJ =7(F&' #5X1+2(9-F&JQ4WF#=7)"^ +=IA3_w M-X!PX 8"&#Q9(8!5DVOH<X!;9"OE0SUI0#T - =P@&1W>!3X(@<HD 8]8#YIv MP ,)N -IL (K(&YW5H@@LS&L58@H4(1I8&8@,Q#ZQCL/$S$34XAGIA2+Z$"Qu M4B:IN%YO8 8H(#]Q$6E2J(#>YE;[5T%L,8O[!0(O<P1?P"=8X(DN-HSMMS')t MN(Q!@ 4Z-8N.Z' &YQ[RUVZI.(O4$X <PS7"]8#MMS.P8C#785[)T6EV=A05s M-QW*Q8L!D3%O!6S?Z!5P,&-)\5>MHT-U (=WD"_G](Z^L8<61(\J8(_M%HM(r M47%NP(GPXX=O()%LD8EB!2L)F$"\ Y&A^(O9""L8V#LU-!4$B'#BY09<*"Y/q MH2>R4D,(1$!QDWF242;#D8N\DB2I-U"-I!W>8I"1.(D]( .:Z ,G9 (DTS'Tp MF#'QF#'XY(UL,8W,N /.*&7C1D\4N3=5<B5,X(EAE08:\6:9D0"-\BAH!CSQo M^)'8.)9^&)%LL3$4R8G9:%F\$X@)J8'S<Y!_ACX>.8]X"2._!EU\B9 KL#$Qn M():\$Y24:(F8:#VOLXF=&',:"1P!5"N[4CRO=U)?89 2>&=M*9%^J22]R#$_m M9$498Y<S4IJ?DP(-B65:QF7'817X1X6GB&]89I>%&8>D:(JH&#)S&8-)T7!Fl M.%AV(")UT'XBHE0F25O <GH' WKH@SZK%SOF2%_8F)%)L6GM8HQ 1"PC:6?/k M=Q;25W[D29YE1X-B%79W)P??YW4*!'7E&9_6UW92\'9Q5P1SIY[@U51Z1SVVj MMS:*"&$4IG*!9V$)X'+S56]HE7CO-CSQ)H4C9@:+-W>T]'AO)'G,07F6!T\Ti M27>_P7EXX7ER)&FB1WK8>1RZIWI(QWI"\WJG92[HPH!Q\9^E WDH^IPJZGO1h M,5[!!YT_%R-!9P.5XA(UD&P;(0-#)P,U\!?)=QQH\"#F5GN&=WLVZIRIQWO3g MF2N[LE[5!$1Q@7A4^D96RH&]MUC9LBW=$AT*)4=<*GO,I3JLXUZEEYWJUJ,Lf M":<&Q)&]@Y? $SSP-CX"*&+8\V:P$HGF)3R5"16[DH*823";B2XM]G3:]6/Fe M=5@7)UY3M23EY5D,%J"Z0CT2AI*?I"O>LEY?80:B16<=ERX_*D(W@0.>@A#Cd M45'@5SU.<09IX!ZV$H+5T5%F07;H0FE.!D8_QI_T!P+)LSS-\SP9(T;(NCW+c MVG-E.F2.!5F256)MQ3$< VQ&2#*#8@1& /@.JY="0+.RB=^,EG3REC5:F3;b MAA2MIUS<"H4D,P5%H#?49*]0\#+W21[Y1*C9608CF#@@D 1:!0(Q@WD%56?!a MFEU'L$\[.E6BBH:F^FJ5(Q3?1"E,^FQ>9ZL@@*NZRI*>Y:LO5$W"2D_$^AO&z M&F;/JJS=TZP;DZP\ES%\P <5]BSRAP+S^C[>B@?@*J[C:@3E>JY]\B<9$SALy M)65):U=\J@)C@(^AF9? AC)@=8")" )J #_F(WB"!RM?5%#$81R8%T#N8EZ.x M0D,?%2*%!B\79UXC*$!EFXM4LC!+2T\HP%H8TD Z&V8B4!PB$!0P&V4URS%^w MZJ#C8ZY1.YKUDP)("VW1MGPJ9B@EAI9_:CQW*9H+>9A=NTQTH$ZVM3H(= 33v M<:F>AW'5P361@1S[%'MI 5;<*K/1JF+OLS$GP 5N< )4"VU&LV4W)*CT][1Au M!KLOF[L)H)A#N0/ FSVUZ:RU>[N:R(F-^Y5NE;Q;4)M1!P(G@+W1&U9H:RUNt M<)P RRMK8'G86[YTZ[AEJ;2.BX"5>SQJP(FS"Z'8DXII0+QA%90[L(O<NKRTs MJ[U:E934R[_8:[LGL#.0N;UA9;\(.#[84[WQ:SYOY"O)T0( PT!;0;!D>[YBr M!98M,*=@ 14GP!XOV62>9;L)9&&6!5;3V0)JD+M'D<+0]D*CEUS;FCO="@+Zq M"@+Y>J_\*G=V(4GAZR@#"W &2S()*QD+:[(."[' 1[H4FU('E$"M6A-!EP.>p M(@.&8G1>1Z#\-VN]5FO]8L-", 53( 1=$+ZARJ7 <F^2AA1@6D$;PZW*PBQGo MS%?:PBW>$DULFE(LR<:Z-:-3"L=AG#U4@"IF'+Y:ZBWWQGNW]&\;A7D_<@9+n M@E3GFZTH(*4-UL7EHT_+1V36>F1J$2A8V7K.JJ\]+*V1"B5V@S=Z<ZY^ SB;m M0BDE- ,QX&S8M<6 U\4<PX 9PZUC7,9U#"MIS,=KS']M_*4+JLMRO"R';,=Hl MFL=K6E+$;"M^+,,(*LC<6LBI$LS]:$>[LLBCZV_5\LB2$<F3?,(FYE:8;&[7k M*U>KAP*1"\2AG,Z$2\H;8\I2<)\9D\KT=#=Y@[A[\LJ2*VR,LR(R@*0N<D*Tj M>A1N8T&U-U[F-E/VQ7/YQ5,^!50V]5])4%3')6N$ZW?WQA8JP,7$V%\9':T5i MO5\7/=%#M=$!5G@-K5SK'-(F?5\Y-2/ZQ5\8+50 YL+#B@)D\%X^L#&YHGCKh M2FWM>JU!7*=MD$?L<5J^(<(+QQ[C@:?M10:HX]#Q>L\\G,]R1TTG9!=N\ZZ\g M\@59O3%8?3:I2')V]%XSHE9'!3_K]05O(#<S[)]$%-3UEM>H4V]F?39=5#DSf M, .S3 .VK"."Y-&73*/TM=,4C=,67=,:S=$O%-0.#=+\)](DW7X2[5\H#=DJe M+=DM3=DPK=@SG=FBC5^@K=,LW=,GZU:6/=2C:M3O',_AM&E-O6M0/2&U.%!4d MW3MLL#H%^<=I_7'UG%Q<O:]>C9]@[:]C'4%_;=S%O=9%K5-P+6!RG5)T;==/c -A=>*J']\?39^C3I=!%Q<b a end -- Klamer Schutte Faculty of electrical engineering -- University of Twente, The Netherlands klamer@mi.eltn.utwente.nl {backbone}!mcsun!mi.eltn.utwente.nl!klamer