[SCM] UID Wrapper Repository - branch master updated

Andreas Schneider asn at samba.org
Mon Jun 6 09:23:42 UTC 2016


The branch, master has been updated
       via  c026252 tests: Use alpha-specific syscalls.
       via  cf2b353 uwrap: Use alpha-specific syscalls.
       via  a00a6b8 uwrap: Attempt to dlopen libc.so.*.1 as a fallback.
      from  2bd91fc Bump version to 1.2.1

https://git.samba.org/?p=uid_wrapper.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit c026252807478862e9d718b00b6ae4493a84b976
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Apr 5 13:28:56 2016 -0700

    tests: Use alpha-specific syscalls.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11821
    
    Signed-off-by: Matt Turner <mattst88 at gmail.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit cf2b35344d4de927f158a1e6d5b6bbc1be2ffd96
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Apr 5 13:28:30 2016 -0700

    uwrap: Use alpha-specific syscalls.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11821
    
    Signed-off-by: Matt Turner <mattst88 at gmail.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit a00a6b8b300b7baa867191e2bc016b835cf8d1b3
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Apr 5 13:41:13 2016 -0700

    uwrap: Attempt to dlopen libc.so.*.1 as a fallback.
    
    glibc on Alpha and IA64 is libc.so.6.1.
    
    Without this, uwrap.libc.handle is set to RTLD_NEXT, leading to a
    segmentation fault in the unit tests when dlclose() is called.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11821
    
    Signed-off-by: Matt Turner <mattst88 at gmail.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 src/uid_wrapper.c           | 15 +++++++++++++++
 tests/test_syscall.c        |  4 ++++
 tests/test_syscall_gid.c    |  4 ++++
 tests/test_syscall_setuid.c |  4 ++++
 4 files changed, 27 insertions(+)


Changeset truncated at 500 lines:

diff --git a/src/uid_wrapper.c b/src/uid_wrapper.c
index 743d590..ded857a 100644
--- a/src/uid_wrapper.c
+++ b/src/uid_wrapper.c
@@ -407,6 +407,13 @@ static void *uwrap_load_lib_handle(enum uwrap_lib lib)
 				if (handle != NULL) {
 					break;
 				}
+
+				/* glibc on Alpha and IA64 is libc.so.6.1 */
+				snprintf(soname, sizeof(soname), "libc.so.%d.1", i);
+				handle = dlopen(soname, flags);
+				if (handle != NULL) {
+					break;
+				}
 			}
 
 			uwrap.libc.handle = handle;
@@ -1894,7 +1901,11 @@ static long int uwrap_syscall (long int sysno, va_list vp)
 
 	switch (sysno) {
 		/* gid */
+#ifdef __alpha__
+		case SYS_getxgid:
+#else
 		case SYS_getgid:
+#endif
 #ifdef HAVE_LINUX_32BIT_SYSCALLS
 		case SYS_getgid32:
 #endif
@@ -1963,7 +1974,11 @@ static long int uwrap_syscall (long int sysno, va_list vp)
 #endif /* SYS_getresgid && HAVE_GETRESGID */
 
 		/* uid */
+#ifdef __alpha__
+		case SYS_getxuid:
+#else
 		case SYS_getuid:
+#endif
 #ifdef HAVE_LINUX_32BIT_SYSCALLS
 		case SYS_getuid32:
 #endif
diff --git a/tests/test_syscall.c b/tests/test_syscall.c
index c43f1f9..912686f 100644
--- a/tests/test_syscall.c
+++ b/tests/test_syscall.c
@@ -26,7 +26,11 @@ static void test_uwrap_syscall(void **state)
 
 	(void) state; /* unused */
 
+#ifdef __alpha__
+	rc = syscall(SYS_getxpid);
+#else
 	rc = syscall(SYS_getpid);
+#endif
 	assert_int_equal(rc, getpid());
 
 	ZERO_STRUCT(tv1);
diff --git a/tests/test_syscall_gid.c b/tests/test_syscall_gid.c
index 3ccdd4a..5664dc2 100644
--- a/tests/test_syscall_gid.c
+++ b/tests/test_syscall_gid.c
@@ -33,7 +33,11 @@ static void test_uwrap_syscall_setgid(void **state)
 
 	g = getgid();
 	assert_int_equal(g, 1);
+#ifdef __alpha__
+	assert_int_equal(g, syscall(SYS_getxgid));
+#else
 	assert_int_equal(g, syscall(SYS_getgid));
+#endif
 }
 
 static void test_uwrap_syscall_setregid(void **state)
diff --git a/tests/test_syscall_setuid.c b/tests/test_syscall_setuid.c
index fbe9200..d237e27 100644
--- a/tests/test_syscall_setuid.c
+++ b/tests/test_syscall_setuid.c
@@ -69,7 +69,11 @@ static void test_uwrap_syscall_setuid(void **state)
 
 	u = getuid();
 	assert_int_equal(u, 5555);
+#ifdef __alpha
+	assert_int_equal(u, syscall(SYS_getxuid));
+#else
 	assert_int_equal(u, syscall(SYS_getuid));
+#endif
 
 	rc = syscall(SYS_setuid, 0);
 	assert_int_equal(rc, -1);


-- 
UID Wrapper Repository



More information about the samba-cvs mailing list