Date: Sat, 4 Aug 2007 15:48:11 -0500 From: Don Hinton <don.hinton@vanderbilt.edu> To: freebsd-questions@freebsd.org Cc: RW <fbsd06@mlists.homeunix.com> Subject: Re: How does Sendmail know how it was invoked? Message-ID: <200708041548.11996.don.hinton@vanderbilt.edu> In-Reply-To: <20070804211334.782c37ff@gumby.homeunix.com.> References: <20070804190634.69234e1e@gumby.homeunix.com.> <20070804182307.GD77822@dan.emsphone.com> <20070804211334.782c37ff@gumby.homeunix.com.>
next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 04 August 2007 15:13:34 RW wrote: > On Sat, 4 Aug 2007 13:23:07 -0500 > > Dan Nelson <dnelson@allantgroup.com> wrote: > > In the last episode (Aug 04), RW said: > > > mailwrapper checks to see how it was invoked and then looks up the > > > appropriate command in mailer.conf. All of the entries in > > > mailer.conf point to /usr/libexec/sendmail/sendmail, so how does > > > that binary know what it's supposed to do. > > > > The kernel passes the executable name to the running process along > > with the rest of the commandline arguments. If you run "ls -l /tmp", > > for example, the ls binary gets "ls", "-l", and "/tmp" as its > > arguments. See around line 360 of src/contrib/sendmail/src/main.c. > > Yes, I understand that. When you type mailq, mailwrapper's argv[0] will > contain "mailq". but then mailwrapper looks-up mailq in mailer.conf > and runs /usr/libexec/sendmail/sendmail. So when sendmail checks it's > argv[0] I was assuming that it would see "sendmail". > > What I didn't get was that when a binary is executed from execve(), it's > the parent program that sets the argv[0] seen by the child, and not > the kernel. Sorry, I should have paid closer attention to your question and actually looked at the code to see what they were doing in this specific case. They original args, including argv[0], are passed as args parameter to execve. So from the perspective of the called application, the original argv[0] is now argv[1]. Take a look at how mailwrapper.c uses the arglist structure. http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/mailwrapper/mailwrapper.c?rev=1.11;content-type=text%2Fplain hth... don > > > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to > "freebsd-questions-unsubscribe@freebsd.org" -- Don Hinton <don.hinton at vanderbilt.edu> or <hintonda at gmail.com> Institute for Software Integrated Systems (ISIS), Vanderbilt University tel: 615.480.5667 or 615.870.9728
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708041548.11996.don.hinton>