On Tue, Jul 27, 2010 at 08:14:12PM +0600, Марк Коренберг wrote: > I have set up bad NFS server. > All user/group of files became 4294967294:4294967294. > > I have /bin/mount set-uid bit. > > So, when mount executes it will have euid=4294967294. > When I do strace mount .... I see geteuid32() = -1 ENOENT (No such file or > directory), But man says that this syscall never return error...
Thanks for the report, and sorry for the long delay.
> Please fix. This syscall return unsigned integer (uid_t). Please check other
> syscalls returning uid_t
This bug was not so easily fixable because strace had no notion of
syscalls that are always successful.
Here is a test case:
$ cat tgid.c
#include <unistd.h>
#include <sys/fsuid.h>
int main(void)
{
const gid_t gid = -18;
setgid(gid);
getegid();
setfsgid(gid);
return 0;
}
$ gcc -std=gnu99 -m32 -O2 -Wall tgid.c -o tgid32
$ gcc -std=gnu99 -m64 -O2 -Wall tgid.c -o tgid64
# strace32 -e trace=setgid,setgid32,setfsgid,setfsgid32,getegid,getegid32
./tgid32
setgid32(4294967278) = 0
getegid32() = -1 EXDEV (Invalid cross-device link)
setfsgid32(4294967278) = -1 EXDEV (Invalid cross-device link)
# strace64 -e trace=setgid,setgid32,setfsgid,setfsgid32,getegid,getegid32
./tgid32
[ Process PID=5678 runs in 32 bit mode. ]
setgid32(4294967278) = 0
getegid32() = -1 EXDEV (Invalid cross-device link)
setfsgid32(4294967278) = -1 EXDEV (Invalid cross-device link)
# strace64 -e trace=setgid,setgid32,setfsgid,setfsgid32,getegid,getegid32
./tgid64
setgid(4294967278) = 0
getegid() = 4294967278
setfsgid(4294967278) = -1 EXDEV (Invalid cross-device link)
And here is a proposed fix:
http://strace.git.sourceforge.net/git/gitweb.cgi?p=strace/strace;a=commitdiff;h=v4.5.20-61-g50a218d
--
ldv
pgpsvrIB0IEtX.pgp
Description: PGP signature
------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________ Strace-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
