[uClibc]asprintf problem

Erik Andersen andersen at codepoet.org
Sun Mar 2 09:51:03 UTC 2003


On Sun Mar 02, 2003 at 04:43:36AM -0500, Daryle C. Lewis wrote:
> Code: test.c
> #include <stdio.h>
> main()
> {
>   char *cmd = "/usr/bin/ping -c %d %s";
>   char *command=NULL;
>   int ret;
>   ret = asprintf (&command, cmd, 1, "10.1.0.3");
>   printf ("%d %s\n", ret, command);
> }
> 
> Runs:
> [root at hydra xmlobj]# ./test
> 27 /usr/bin/ping -c 1 10.1.0.3
> [root at hydra xmlobj]# su nobody
> [nobody at hydra xmlobj]$ ./test
> -1

The permissions on /dev/null do not allow user 'nobody' to
write anything to it.

# gcc -Wall -O2 foo.c -o foo
foo.c: In function `main':
foo.c:8: warning: implicit declaration of function `asprintf'
foo.c:10: warning: implicit declaration of function `exit'
# cp foo /tmp
# su - nobody
$ cd /tmp/
$ strace ./foo
execve("./foo", ["./foo"], [/* 19 vars */]) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0) = 0x40005000
readlink("/lib/ld-uClibc.so.0", "ld-uClibc-0.9.18.so", 1024) = 19
open("/lib/libc.so.0", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\334"..., 4096) = 4096
old_mmap(NULL, 253952, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40006000
old_mmap(0x40006000, 237504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x40006000
old_mmap(0x40040000, 5152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x3a000) = 0x40040000
old_mmap(0x40042000, 7980, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40042000
close(3)                                = 0
mprotect(0x40006000, 237504, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0x40006000, 237504, PROT_READ|PROT_EXEC) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE, {B38400 opost isig icanon echo ...}) = 0
brk(0x804c4d0)                          = 0x804c4d0
brk(0x804d000)                          = 0x804d000
brk(0x804e000)                          = 0x804e000
brk(0x804f000)                          = 0x804f000
brk(0x8050000)                          = 0x8050000
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission denied)
write(1, "-1 \n", 4-1
)                    = 4
_exit(0)                                = ?

 -Erik

--
Erik B. Andersen             http://codepoet-consulting.com/
--This message was written using 73% post-consumer electrons--



More information about the uClibc mailing list