[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libglvnd: Changes to 'upstream-unstable'



 src/GLX/libglx.c        |    7 +++++++
 src/GLX/libglxmapping.c |    5 +++++
 tests/Makefile.am       |    6 +++---
 3 files changed, 15 insertions(+), 3 deletions(-)

New commits:
commit f7e7657803bb3c275d1d3c6afd4c889660b6bb71
Author: Andy Ritger <aritger@nvidia.com>
Date:   Tue Sep 3 22:39:08 2013 -0700

    Check for strdup(3) failure in cacheProcAddress()
    
    Signed-off-by: Andy Ritger <aritger@nvidia.com>
    Signed-off-by: Brian Nguyen <brnguyen@nvidia.com>

diff --git a/src/GLX/libglx.c b/src/GLX/libglx.c
index 47373de..011d572 100644
--- a/src/GLX/libglx.c
+++ b/src/GLX/libglx.c
@@ -880,6 +880,13 @@ static void cacheProcAddress(const GLubyte *procName, __GLXextFuncPtr addr)
     }
 
     pEntry->procName = (GLubyte *)strdup((const char *)procName);
+
+    if (pEntry->procName == NULL) {
+        assert(pEntry->procName);
+        free(pEntry);
+        return;
+    }
+
     pEntry->addr = addr;
 
     LKDHASH_WRLOCK(__glXPthreadFuncs, __glXProcAddressHash);

commit 345a2f34ce50a39580a39deb9950d0b8c06d79a2
Author: Andy Ritger <aritger@nvidia.com>
Date:   Tue Sep 3 22:23:56 2013 -0700

    Link libtrace.la *after* libglvnd_pthread.la
    
    Debug builds of libglvnd_pthread.la depend on the __glvnd_dbg_printf
    symbol from libtrace.la.  Sort the link order so that the linker sees
    libglvnd_pthread.la and its unresolved symbol first, so that it knows
    to resolve it when it subsequently sees libtrace.la.
    
    Signed-off-by: Andy Ritger <aritger@nvidia.com>
    Signed-off-by: Brian Nguyen <brnguyen@nvidia.com>

diff --git a/tests/Makefile.am b/tests/Makefile.am
index b2b5331..f25474d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -68,8 +68,8 @@ testglxnscreens_CFLAGS = -I$(X11GLVND_DIR) $(AM_CFLAGS)
 testglxnscreens_LDADD = -lX11
 testglxnscreens_LDADD += $(top_builddir)/src/GLX/libGLX.la
 testglxnscreens_LDADD += $(top_builddir)/src/OpenGL/libOpenGL.la
-testglxnscreens_LDADD += $(top_builddir)/src/util/trace/libtrace.la
 testglxnscreens_LDADD += $(top_builddir)/src/util/glvnd_pthread/libglvnd_pthread.la
+testglxnscreens_LDADD += $(top_builddir)/src/util/trace/libtrace.la
 testglxnscreens_LDADD += -lX11 $(X11GLVND_DIR)/libx11glvnd_client.la
 
 # The *_oldlink variant tests that linking against legacy libGL.so works
@@ -86,8 +86,8 @@ testglxmakecurrent_oldlink_SOURCES = \
 
 testglxmakecurrent_oldlink_LDADD = -lX11
 testglxmakecurrent_oldlink_LDADD += $(top_builddir)/src/GL/libGL.la
-testglxmakecurrent_oldlink_LDADD += $(top_builddir)/src/util/trace/libtrace.la
 testglxmakecurrent_oldlink_LDADD += $(top_builddir)/src/util/glvnd_pthread/libglvnd_pthread.la
+testglxmakecurrent_oldlink_LDADD += $(top_builddir)/src/util/trace/libtrace.la
 
 testx11glvndproto_CFLAGS = -I$(X11GLVND_DIR)
 testx11glvndproto_LDADD = -lX11 $(X11GLVND_DIR)/libx11glvnd_client.la
@@ -107,8 +107,8 @@ testglxgetprocaddress_LDADD = $(top_builddir)/src/GLX/libGLX.la
 testglxmakecurrent_LDADD = -lX11
 testglxmakecurrent_LDADD += $(top_builddir)/src/GLX/libGLX.la
 testglxmakecurrent_LDADD += $(top_builddir)/src/OpenGL/libOpenGL.la
-testglxmakecurrent_LDADD += $(top_builddir)/src/util/trace/libtrace.la
 testglxmakecurrent_LDADD += $(top_builddir)/src/util/glvnd_pthread/libglvnd_pthread.la
+testglxmakecurrent_LDADD += $(top_builddir)/src/util/trace/libtrace.la
 
 testglxgetclientstr_LDADD = -lX11
 testglxgetclientstr_LDADD += $(top_builddir)/src/GLX/libGLX.la

commit c8ae6458854379b615d0030c991ac99614eeec56
Author: Andy Ritger <aritger@nvidia.com>
Date:   Tue Sep 3 21:57:16 2013 -0700

    Check strdup(3) return value in AllocDispatchIndex()
    
    Signed-off-by: Andy Ritger <aritger@nvidia.com>
    Signed-off-by: Brian Nguyen <brnguyen@nvidia.com>

diff --git a/src/GLX/libglxmapping.c b/src/GLX/libglxmapping.c
index 9932e8a..c243cf4 100644
--- a/src/GLX/libglxmapping.c
+++ b/src/GLX/libglxmapping.c
@@ -130,6 +130,10 @@ static GLboolean AllocDispatchIndex(__GLXvendorInfo *vendor,
     }
 
     pEntry->procName = (GLubyte *)strdup((const char *)procName);
+    if (!pEntry->procName) {
+        free(pEntry);
+        return GL_FALSE;
+    }
 
     LKDHASH_WRLOCK(__glXPthreadFuncs, __glXDispatchIndexHash);
     pEntry->index = __glXNextUnusedHashIndex++;

commit b7f965ed737f327ed66957963ea26fcf14ccf3f5
Author: Andy Ritger <aritger@nvidia.com>
Date:   Tue Sep 3 21:55:54 2013 -0700

    Unlock in the __glXFetchDispatchEntry() failure path.
    
    Signed-off-by: Andy Ritger <aritger@nvidia.com>
    Signed-off-by: Brian Nguyen <brnguyen@nvidia.com>

diff --git a/src/GLX/libglxmapping.c b/src/GLX/libglxmapping.c
index 4eb057d..9932e8a 100644
--- a/src/GLX/libglxmapping.c
+++ b/src/GLX/libglxmapping.c
@@ -228,6 +228,7 @@ __GLXextFuncPtr __glXFetchDispatchEntry(__GLXdispatchTableDynamic *dynDispatch,
             if (!pEntry) {
                 // Uh-oh!
                 assert(pEntry);
+                LKDHASH_UNLOCK(__glXPthreadFuncs, dynDispatch->hash);
                 return NULL;
             }
             pEntry->index = index;


Reply to: