![]() | ||||||||||
Messages in this thread |
On Tue, Jan 14, 2003 at 11:46:44PM -0500, Mark Mielke wrote: > On Tue, Jan 14, 2003 at 03:11:41PM -0800, Bob Miller wrote: > > On Tue, Jan 14, 2003 at 03:04:18PM -0800, Bob Miller wrote: > > > Or you can copy your all your args and env to a temporary place and > > > then re-build your args and env with the new argv[0] in it's place. > > > But you must be carefull that your new argv[0] length plus the > > > length of all remaining args, envp and pointers is not greater than > > > the system defined size for this space. > > In thinking about this more this will NOT work. The user stack starts > > right after your envp. So, writing more info there would blow away > > your stack. > > I can smell the next hack... memmove() the stack down to make room... :-) No need. You can memcpy the environment. See setenv(3), putenv(3) and related library routines. Once you've parsed your argv who cares if you overwrite it, put a double NULL at the end, set argc = 1 and argv[1] = NULL. If argv[argc] - argv[0] + strlen(argv[argc] is shorter than what you overwrite it with you won't even need to relocate the environment block if you wish to preserve that. Just don't leave any loose ends to confuse /proc and the ps utils. -- ________________________________________________________________ J.W. Schultz Pegasystems Technologies email address: jw@pegasys.ws Remember Cernan and Schmitt - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | |||||||||
| Last update: 2005-03-22 12:32 [from the cache] ©2003-2008 | ||||||||||