Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #70234
| Date | 2014-04-14 14:13 -0700 |
|---|---|
| From | Ethan Furman <ethan@stoneleaf.us> |
| Subject | Python, Linux, and the setuid bit |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.9260.1397511440.18130.python-list@python.org> (permalink) |
For anyone in the unenviable position of needing [1] to run Python scripts with the setuid bit on, there is an
suid-python wrapper [2] that makes this possible.
When I compiled it I was given a couple warnings. Can any one shed light on what they mean?
==================================================================
suid-python.c: In function ‘malloc_abort’:
suid-python.c:119:17: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t’ [-Wformat]
suid-python.c: In function ‘remove_env_prefix’:
suid-python.c:200:32: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
suid-python.c:201:32: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
==================================================================
and the code segments in question:
==================================================================
void *
malloc_abort(size_t size)
{
void *buf;
buf = malloc(size);
if (!buf)
{
fprintf(stderr, "Could not allocate %d bytes. errno=%d\n",
size, errno);
exit(1);
}
return buf;
}
------------------------------------------------------------------
int
remove_env_prefix(char **envp, char *prefix)
{
char **envp_read;
char **envp_write;
int prefix_len = strlen(prefix);
int removed_count = 0;
envp_write = envp;
for (envp_read = envp; *envp_read; envp_read++)
{
if (!strncmp(*envp_read, prefix, prefix_len))
{
/* Step past the environment variable that we don't want. */
removed_count++;
continue;
}
if (envp_read != envp_write)
{
*envp_write = *envp_read;
}
envp_write++;
}
/* Set the remaining slots to NULL. */
if (envp_write < envp_read)
{
memset(envp_write, 0, ((unsigned int) envp_read -
(unsigned int) envp_write));
}
return removed_count;
}
==================================================================
Thanks!
--
~Ethan~
[1] Need, or really really really convenient to have. ;)
[2] http://selliott.org/python/
Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread
Python, Linux, and the setuid bit Ethan Furman <ethan@stoneleaf.us> - 2014-04-14 14:13 -0700
Re: Python, Linux, and the setuid bit John Gordon <gordon@panix.com> - 2014-04-14 21:55 +0000
Re: Python, Linux, and the setuid bit Grant Edwards <invalid@invalid.invalid> - 2014-04-14 22:04 +0000
Re: Python, Linux, and the setuid bit Grant Edwards <invalid@invalid.invalid> - 2014-04-14 22:07 +0000
Re: Python, Linux, and the setuid bit Richard Kettlewell <rjk@greenend.org.uk> - 2014-04-15 09:00 +0100
Re: Python, Linux, and the setuid bit Chris Angelico <rosuav@gmail.com> - 2014-04-15 18:15 +1000
Re: Python, Linux, and the setuid bit Richard Kettlewell <rjk@greenend.org.uk> - 2014-04-15 10:28 +0100
Re: Python, Linux, and the setuid bit Chris Angelico <rosuav@gmail.com> - 2014-04-15 19:35 +1000
Re: Python, Linux, and the setuid bit Chris Angelico <rosuav@gmail.com> - 2014-04-15 18:18 +1000
csiph-web