]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix syscall param msg->desc.port.name on macOS 10.12. bz#379373
authorRhys Kidd <rhyskidd@gmail.com>
Sun, 10 Sep 2017 05:12:15 +0000 (01:12 -0400)
committerRhys Kidd <rhyskidd@gmail.com>
Sun, 10 Sep 2017 14:50:06 +0000 (10:50 -0400)
Based upon patch from Louis Brunner.

NEWS
coregrind/m_syswrap/syswrap-darwin.c
darwin14.supp
darwin15.supp
darwin16.supp

diff --git a/NEWS b/NEWS
index 1b5c80a2583c4b405797ccf686f7788679a01a56..e43410acb67908833d2f1d078ad09ca59c17ee4b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -35,6 +35,8 @@ To see details of a given bug, visit
   https://bugs.kde.org/show_bug.cgi?id=XXXXXX
 where XXXXXX is the bug number as listed below.
 
+379373  Fix syscall param msg->desc.port.name points to uninitialised byte(s)
+        on macOS 10.12
 379748  Fix missing pselect syscall (OS X 10.11)
 380397  s390x: __GI_strcspn() replacemenet needed
 381162  possible array overrun in VEX register allocator
index 0ae281ce811750828221defe336edbffdd83deae..06708247b444b5d9afd7f6704ea9ba49d8ab545c 100644 (file)
@@ -9580,8 +9580,20 @@ PRE(kernelrpc_mach_port_construct_trap)
 {
    UWord a1; UWord a2; ULong a3; UWord a4;
    munge_wwlw(&a1, &a2, &a3, &a4, ARG1, ARG2, ARG3, ARG4, ARG5);
-   PRINT("kernelrpc_mach_port_construct_trap(FIXME)"
-         "(%lx,%lx,%llx,%lx)", a1, a2, a3, a4);
+   PRINT("kernelrpc_mach_port_construct_trap"
+         "(target: %s, options: %#lx, content: %llx, name: %p)",
+         name_for_port(a1), a2, a3, *(mach_port_name_t**)a4);
+   PRE_MEM_WRITE("kernelrpc_mach_port_construct_trap(name)", a4,
+                 sizeof(mach_port_name_t*));
+}
+POST(kernelrpc_mach_port_construct_trap)
+{
+   UWord a1; UWord a2; ULong a3; UWord a4;
+   munge_wwlw(&a1, &a2, &a3, &a4, ARG1, ARG2, ARG3, ARG4, ARG5);
+   PRINT("-> name:%p", *(mach_port_name_t**)a4);
+   if (ML_(safe_to_deref)((mach_port_name_t*)a4, sizeof(mach_port_name_t*))) {
+      POST_MEM_WRITE(a4, sizeof(mach_port_name_t*));
+   }
 }
 
 PRE(kernelrpc_mach_port_destruct_trap)
@@ -10597,7 +10609,7 @@ const SyscallTableEntry ML_(mach_trap_table)[] = {
 #  endif
 
 #  if DARWIN_VERS >= DARWIN_10_9
-   MACX_(VG_DARWIN_SYSCALL_CONSTRUCT_MACH(24), kernelrpc_mach_port_construct_trap),
+   MACXY(VG_DARWIN_SYSCALL_CONSTRUCT_MACH(24), kernelrpc_mach_port_construct_trap),
    MACX_(VG_DARWIN_SYSCALL_CONSTRUCT_MACH(25), kernelrpc_mach_port_destruct_trap),
 #  else
    _____(VG_DARWIN_SYSCALL_CONSTRUCT_MACH(24)), 
index ba818d5390244837419cbdaa7cf57528822805ee..63fe2b4e676d332baf681bc609f05dedcd233849 100644 (file)
    obj:*GPUSupport.framework*GPUSupportMercury*
 }
 
-{
-   OSX1010:mach_msg_trap-1
-   Memcheck:Param
-   msg->desc.port.name
-   fun:mach_msg_trap
-   obj:*libsystem_kernel.dylib*
-   obj:*SystemConfiguration.framework*SystemConfiguration*
-}
-
-{
-   OSX1010:mach_msg_trap-2
-   Memcheck:Param
-   msg->desc.port.name
-   fun:mach_msg_trap
-   obj:*SystemConfiguration.framework*SystemConfiguration*
-   obj:*SystemConfiguration.framework*SystemConfiguration*
-}
-
 # See https://bugs.kde.org/show_bug.cgi?id=188572 about this;  it's
 # unavoidable due to BSD setenv() semantics.
 {
index e745cf02e7c5d0d530b49da989dbfdd958762cbb..a383d24b688ee58c7eeca8dbe87812c956295cae 100644 (file)
    obj:*GPUSupport.framework*GPUSupportMercury*
 }
 
-{
-   OSX1011:mach_msg_trap-1
-   Memcheck:Param
-   msg->desc.port.name
-   fun:mach_msg_trap
-   obj:*libsystem_kernel.dylib*
-   obj:*SystemConfiguration.framework*SystemConfiguration*
-}
-
-{
-   OSX1011:mach_msg_trap-2
-   Memcheck:Param
-   msg->desc.port.name
-   fun:mach_msg_trap
-   obj:*SystemConfiguration.framework*SystemConfiguration*
-   obj:*SystemConfiguration.framework*SystemConfiguration*
-}
-
 # See https://bugs.kde.org/show_bug.cgi?id=188572 about this;  it's
 # unavoidable due to BSD setenv() semantics.
 {
index b3f9dbd32810913235b140bd08e502e7cda32c25..18dda6a703a92fb40bc43a52f5617145ffbae722 100644 (file)
    obj:*GPUSupport.framework*GPUSupportMercury*
 }
 
-{
-   OSX1012:mach_msg_trap-1
-   Memcheck:Param
-   msg->desc.port.name
-   fun:mach_msg_trap
-   obj:*libsystem_kernel.dylib*
-   obj:*SystemConfiguration.framework*SystemConfiguration*
-}
-
-{
-   OSX1012:mach_msg_trap-2
-   Memcheck:Param
-   msg->desc.port.name
-   fun:mach_msg_trap
-   obj:*SystemConfiguration.framework*SystemConfiguration*
-   obj:*SystemConfiguration.framework*SystemConfiguration*
-}
-
 # See https://bugs.kde.org/show_bug.cgi?id=188572 about this;  it's
 # unavoidable due to BSD setenv() semantics.
 {