Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!samsung!uunet!mcsun!hp4nl!utrcu1!mi.eltn.utwente.nl!klamer From: klamer@mi.eltn.utwente.nl (Klamer Schutte) Newsgroups: comp.os.minix Subject: #! interpretation in the kernel -- the source Summary: Really in MM Message-ID: Date: 7 May 91 12:45:44 GMT Sender: news@utrcu1.UUCP Organization: University of Twente, BSC-El Lines: 146 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=LGFW7MYQX30.U[U_ "@6?/&IX9>+%1QL_CFP:1!@R9,J0 3$Bv M! @X%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! ,>,NMO.;1AAAOL,%K&KYV9:NPP4FF@K$@9 8Kn M4UYU]14=U8F8QAEN0,:5&6](%@:-((B1!QU.R4NOO>RU$<88:)AZKI;()A $m M$TD*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,<<62! AQ1=3)*%%$2_(T 4+OLEA/.YF(*\\\\X7,3T()1)O_5<;PY#Tg M9KX!)[[Q6\#0A<8<^VYN"F R 3NL1$PWQQN0M230!LMLK(&P6\\:1K'"G0L(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(@53Y8P1 MBT(-SV*"NXD8UJ\!NBNS9V 7/%M.,;2MW**MSH5&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_E(,N6.!AT7C-NP@K#0.@WNZPAY5*B4!m M9[#C=%CI2EBZXO[* %&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#G:Th M\^I 269C0RM:P5' X*Q>-0Q9E7!:RTWALCJXKF(5*R_U( ;J/2^)0JB"$7!:g MA"XZM">.B\%B= (J%'II8S[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'((>+[\S(#WCMa M1CT!43QV@&1\ 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!3X(@YE;[5T%L,8O[!0(OMHT-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.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%&8>D:(JH&#)S&8-)T7!Fl M.%AV(")UT'XBHE0F25O 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[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 $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[LLBCZV_5\LB2$KAP*1"\2AG,Z$2\H;8\I2<)\9D\KT=#=Y@[A[\LJ2*VR,LR(R@*0NA1N8T&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(#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%QC9]@[:]C'4%_;=S%O=9%K5-P+6!RG5)T;==/c -A=>*J']\?39^C3I=!%Q