[Glibc-bsd-commits] r4571 - in trunk/glibc-ports: . fbtl-misc
Petr Salinger
ps-guest at alioth.debian.org
Mon Jul 8 12:42:50 UTC 2013
Author: ps-guest
Date: 2013-06-22 08:47:47 +0000 (Sat, 22 Jun 2013)
New Revision: 4571
Added:
trunk/glibc-ports/fbtl-misc/
trunk/glibc-ports/fbtl-misc/test-setxid.c
Log:
auxiliary test-setxid.c for tests
Added: trunk/glibc-ports/fbtl-misc/test-setxid.c
===================================================================
--- trunk/glibc-ports/fbtl-misc/test-setxid.c (rev 0)
+++ trunk/glibc-ports/fbtl-misc/test-setxid.c 2013-06-22 08:47:47 UTC (rev 4571)
@@ -0,0 +1,53 @@
+/*
+
+ Under Linux kernel uid/gid are per thread, library have to sync them.
+ Under FreeBSD kernel uid/gid are per process.
+
+ */
+
+
+
+#include <pthread.h>
+#include <unistd.h>
+#include <sys/syscall.h> /* For SYS_xxx definitions */
+#include <stdio.h>
+
+
+void * doit(void *v)
+{
+ int rv;
+ sleep(1);
+ rv = syscall(SYS_getgid,0);
+ printf("get1 :%d %d\n", rv, getgid());
+ rv = syscall(SYS_setgid, 1000);
+ printf("set1 :%d\n", rv);
+ rv = syscall(SYS_getgid,0);
+ printf("get2 :%d %d\n", rv, getgid());
+ sleep(2);
+ setgid(2000);
+ rv = syscall(SYS_getgid,0);
+ printf("get after standard set :%d %d\n", rv, getgid());
+
+};
+
+
+
+int main()
+{
+ int rv;
+ pthread_t th;
+ rv = syscall(SYS_getgid,0);
+ printf("get main 1:%d %d\n", rv, getgid());
+ pthread_create(&th, NULL, doit, NULL);
+ rv = syscall(SYS_getgid,0);
+ printf("get main 2:%d %d\n", rv, getgid());
+ sleep(2);
+ rv = syscall(SYS_getgid,0);
+ printf("get main 3:%d %d\n", rv, getgid());
+ sleep(2);
+ rv = syscall(SYS_getgid,0);
+ printf("get main 4:%d %d\n", rv, getgid());
+ sleep(1);
+ printf("main near to exit\n");
+ sleep(1);
+}
More information about the Glibc-bsd-commits
mailing list