[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