[SCM] Priv Wrapper Repository - branch main updated

Andreas Schneider asn at samba.org
Tue Nov 15 11:16:13 UTC 2022


The branch, main has been updated
       via  9429f65 Avoid dclose(RTLD_NEXT)
       via  cbb353d Fix prctl on ppc64le
      from  826f7b6 Bump version to 1.0.0

https://git.samba.org/?p=priv_wrapper.git;a=shortlog;h=main


- Log -----------------------------------------------------------------
commit 9429f654289ac6ee4ebac69fce9f61502034454d
Author: Samuel Thibault <samuel.thibault at ens-lyon.org>
Date:   Thu Nov 10 18:39:23 2022 +0000

    Avoid dclose(RTLD_NEXT)
    
    In case the libc was not found and RTLD_NEXT is used instead, we should not
    dlclose it, otherwise mayhem happens.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15228
    
    Signed-off-by: Samuel Thibault <samuel.thibault at ens-lyon.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Pavel Filipenský <pfilipensky at samba.org>

commit cbb353de05f8a121b609978360367463961054e6
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Thu Nov 10 13:41:04 2022 +0100

    Fix prctl on ppc64le
    
    There is a fortify abort on ppc64le in test_prctl:
    
    Program received signal SIGABRT, Aborted.
    0x00007ffff7cbc72c in __pthread_kill_implementation () from /lib64/libc.so.6
    (gdb) bt
    
    Some backround from Florian Weimer <fweimer at redhat.com>:
    
    You've got this type definition, and I think that's the function pointer
    you use for the call:
    
    | #ifdef HAVE_PRCTL
    | typedef int (*__libc_prctl)(int option,
    |                             unsigned long arg2,
    |                             unsigned long arg3,
    |                             unsigned long arg4,
    |                             unsigned long arg5);
    | #endif
    
    That's not a variadic prototype, so the callee doesn't set up the
    parameter save area.
    
    This is essentially the same issue that you had a while back with
    open/openat.
    (https://gitlab.com/cwrap/socket_wrapper/-/commit/c7774174beffe9a8d29dd4fb38bbed43ece1cecd)
    
    Reviewed-by: Andreas Schneider <asn at samba.org>

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

Summary of changes:
 src/priv_wrapper.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/src/priv_wrapper.c b/src/priv_wrapper.c
index acff955..d273943 100644
--- a/src/priv_wrapper.c
+++ b/src/priv_wrapper.c
@@ -173,11 +173,7 @@ static void privwrap_log(enum privwrap_dbglvl_e dbglvl,
 
 typedef int (*__libc_chroot)(const char *path);
 #ifdef HAVE_PRCTL
-typedef int (*__libc_prctl)(int option,
-			    unsigned long arg2,
-			    unsigned long arg3,
-			    unsigned long arg4,
-			    unsigned long arg5);
+typedef int (*__libc_prctl)(int option, ...);
 #endif
 #ifdef HAVE_PLEDGE
 typedef int (*__libc_pledge)(const char *promises,
@@ -727,7 +723,11 @@ void privwrap_constructor(void)
 
 void privwrap_destructor(void)
 {
-	if (privwrap.libc.handle != NULL) {
+	if (privwrap.libc.handle != NULL
+#ifdef RTLD_NEXT
+	    && privwrap.libc.handle != RTLD_NEXT
+#endif
+			) {
 		dlclose(privwrap.libc.handle);
 	}
 }


-- 
Priv Wrapper Repository



More information about the samba-cvs mailing list