Skip site navigation (1)Skip section navigation (2)
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>