From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Date: Thu, 20 Nov 2003 00:47:36 +0000 Subject: Re: [udev] support arguments in callout exec Message-Id: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: quoted-printable To: linux-hotplug@vger.kernel.org On Thursday 20 November 2003 13:31, Kay Sievers wrote:> +=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0for (i=3D0; i < CALLOUT_= MAXARG; i++) {> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0args[i] =3D strsep(&arg, " ");> +=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0if (args[i] =3D NULL)> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0break;> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0}> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0if (args[i])> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0dbg("to many args"); This still doesn't look correct: args[i] will be out of boundswhen the loop= has finished on CALLOUT_MAXARG, and the argsarray is not zero terminated w= hen calling execve. I haven't tried it yet, but I think this would make more sense: +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0for (= i=3D0; i < CALLOUT_MAXARG-1; i++) {+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0args[i] =3D strsep(&a= rg, " ");+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0if (args[i] =3D NULL)+=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0break;+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0}+ args[i] =3D arg;+=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0if (args[i])+=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= dbg("to many args"); Aside from that, it looks good. Maybe there should be a way to escapespaces= in the argument in case someone wants to do something like that: CALLOUT, PROGRAM=3D"sh -c 'echo ${DEVPATH} | tr a-z A-Z'", BUS=3D"usb", ID= =3D"XXX", NAME=3D"webcam%n" To take that even further, do you think it might be a good idea to preproce= ss the string in the same way as the NAME=3D argument, allowing e.g.PROGRAM= =3D"/bin/devname %b %M:%m" ? Arnd <><=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF= =FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=D3=86+=12=17=F9= =DE=B5=E9=9A=8AX=AC=B2=9A'=B2=8A=DEu=BC=FFH_=E7z=D1=A2=BD=E6=DArC=EB=A2=DA= =9B=F0=E8z=C4=A8=BA=B7=1E=16=8A=E0{=F9=DE=B6=17=A5=A7*.m=E9=A8=AD=EAk=A1=DB= =9C=B6+=DE=FC:=1E=B2+azZr=A2=E7+y=AB^m=EBmz=B7(u=EF=D2=1C=04DLq=0B9Q=FFjwaz= Zn=B2=17=A5=A5=83=94=FC)brA=DE=AD=EF=E1=B6=DA=FF=FF=FB(=BA=B7=1E~=8A=E0{=F9= =DE=B7=F7h=9D=AB^=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF= =FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF.)=EE=C7=F8h=B6=99n=83= =F7^=BD=E9fj)b=9E b=B2=D8m=B6=9F=FF=FEX=A7=BB=1F=E1=A2=DAe=BA=0F=EC=A2=EA= =DCy=FA+=81=EF=E7z=D2=E2=9E=EC=FF=86=8Bi=96=E8=FFu=EB=DE=97=F9b=B2=DB=FF=B2= =8B=ABq=E7=E8=AE=07=FF=9D=EBa=B6=DAl=FF=FF=E5=8A=CBl=FE=CA.=AD=C7=9F=A2=B8= =1E=FEw=AD=FEX=AC=B6=CF=E5=8A=CBb=9D=FA?=96)=EE=C7=F8h=B6=99n=83=F7^