Correct way to call execve?

Chad David davidc at issci.ca
Mon Jul 21 10:15:43 PDT 2003


On Mon, Jul 21, 2003 at 12:57:35PM -0400, Leo Bicknell wrote:
> In a message written on Mon, Jul 21, 2003 at 08:53:53AM -0700, Tim Kientzle wrote:
> > Actually, this example passes -Wall if you declare
> > "execargv" as simply "char *[]".  However, I'm looking
> > for something that passes gcc -Wwrite-strings, which this
> > example does not.
> 
> % cat exec.c
> 
> #include <unistd.h>
> #include <paths.h>
> 
> int main(int argc, char *const argv[], char *const envp[]) {
>   char *execargv[2];
> 
>   execargv[0] = (char *)_PATH_BSHELL;
>   execargv[1] = (char *)NULL;
> 
>   execve(_PATH_BSHELL,execargv,envp);
> 
>   return 0;
> }
> % cc -Wwrite-strings exec.c
> % cc -Wall exec.c
> 
> Looks good to me.

Try cc -Wwrite-strings -Wcast-qual exec.c.

You cannot simply cast away a const.

-- 
Chad David        davidc at issci.ca
www.FreeBSD.org   davidc at freebsd.org
ISSci Inc.        Calgary, Alberta Canada


More information about the freebsd-hackers mailing list