Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 28c6460f21b27bdcf36b05c7f019a758 > files > 3

xmlsec1-1.2.10-7.2mdv2009.0.src.rpm

diff -p -up xmlsec1-1.2.10/src/ltdl.c.ltdl xmlsec1-1.2.10/src/ltdl.c
--- xmlsec1-1.2.10/src/ltdl.c.ltdl	2003-09-11 19:40:14.000000000 -0400
+++ xmlsec1-1.2.10/src/ltdl.c	2009-11-26 15:23:46.000000000 -0500
@@ -1426,9 +1426,10 @@ lt_dlexit ()
 }
 
 static int
-tryall_dlopen (handle, filename)
+tryall_dlopen (handle, filename, useloader)
      lt_dlhandle *handle;
      const char *filename;
+     const char *useloader;
 {
   lt_dlhandle	 cur;
   lt_dlloader   *loader;
@@ -1484,6 +1485,11 @@ tryall_dlopen (handle, filename)
 
   while (loader)
     {
+      if (useloader && strcmp(loader->loader_name, useloader))
+	{
+	  loader = loader->next;
+	  continue;
+	}
       lt_user_data data = loader->dlloader_data;
 
       cur->module = loader->module_open (data, filename);
@@ -1526,7 +1532,7 @@ find_module (handle, dir, libdir, dlname
   /* try to open the old library first; if it was dlpreopened,
      we want the preopened version of it, even if a dlopenable
      module is available */
-  if (old_name && tryall_dlopen(handle, old_name) == 0)
+  if (old_name && tryall_dlopen(handle, old_name, "dlpreload") == 0)
     {
       return 0;
     }
@@ -1549,7 +1555,7 @@ find_module (handle, dir, libdir, dlname
 	    }
 
 	  sprintf (filename, "%s/%s", libdir, dlname);
-	  error = (tryall_dlopen (handle, filename) != 0);
+	  error = (tryall_dlopen (handle, filename, NULL) != 0);
 	  LT_DLFREE (filename);
 
 	  if (!error)
@@ -1581,7 +1587,7 @@ find_module (handle, dir, libdir, dlname
 	  strcat(filename, objdir);
 	  strcat(filename, dlname);
 
-	  error = tryall_dlopen (handle, filename) != 0;
+	  error = tryall_dlopen (handle, filename, NULL) != 0;
 	  LT_DLFREE (filename);
 	  if (!error)
 	    {
@@ -1604,7 +1610,7 @@ find_module (handle, dir, libdir, dlname
 	  }
 	strcat(filename, dlname);
 
-	error = (tryall_dlopen (handle, filename) != 0);
+	error = (tryall_dlopen (handle, filename, NULL) != 0);
 	LT_DLFREE (filename);
 	if (!error)
 	  {
@@ -1719,7 +1725,7 @@ find_file (basename, search_path, pdir, 
       strcpy(filename+lendir, basename);
       if (handle)
 	{
-	  if (tryall_dlopen (handle, filename) == 0)
+	  if (tryall_dlopen (handle, filename, NULL) == 0)
 	    {
 	      result = (lt_ptr) handle;
 	      goto cleanup;
@@ -2032,7 +2038,7 @@ lt_dlopen (filename)
       /* lt_dlclose()ing yourself is very bad!  Disallow it.  */
       LT_DLSET_FLAG (handle, LT_DLRESIDENT_FLAG);
 
-      if (tryall_dlopen (&newhandle, 0) != 0)
+      if (tryall_dlopen (&newhandle, 0, NULL) != 0)
 	{
 	  LT_DLFREE (handle);
 	  return 0;
@@ -2324,7 +2330,7 @@ lt_dlopen (filename)
 #ifdef LTDL_SYSSEARCHPATH
 		   && !find_file (basename, sys_search_path, 0, &newhandle)
 #endif
-		   )) && tryall_dlopen (&newhandle, filename))
+		   )) && tryall_dlopen (&newhandle, filename, NULL))
 	{
 	  LT_DLFREE (handle);
 	  goto cleanup;
diff -p -up xmlsec1-1.2.10/src/xmlsec-ltdl.c.ltdl xmlsec1-1.2.10/src/xmlsec-ltdl.c
--- xmlsec1-1.2.10/src/xmlsec-ltdl.c.ltdl	2006-06-12 16:15:08.000000000 -0400
+++ xmlsec1-1.2.10/src/xmlsec-ltdl.c	2009-11-26 15:25:33.000000000 -0500
@@ -1426,9 +1426,10 @@ xmlsec_lt_dlexit ()
 }
 
 static int
-tryall_dlopen (handle, filename)
+tryall_dlopen (handle, filename, useloader)
      xmlsec_lt_dlhandle *handle;
      const char *filename;
+     const char *useloader;
 {
   xmlsec_lt_dlhandle	 cur;
   xmlsec_lt_dlloader   *loader;
@@ -1484,6 +1485,11 @@ tryall_dlopen (handle, filename)
 
   while (loader)
     {
+      if (useloader && strcmp(loader->loader_name, useloader))
+	{
+	  loader = loader->next;
+	  continue;
+	}
       xmlsec_lt_user_data data = loader->dlloader_data;
 
       cur->module = loader->module_open (data, filename);
@@ -1526,7 +1532,7 @@ find_module (handle, dir, libdir, dlname
   /* try to open the old library first; if it was dlpreopened,
      we want the preopened version of it, even if a dlopenable
      module is available */
-  if (old_name && tryall_dlopen(handle, old_name) == 0)
+  if (old_name && tryall_dlopen(handle, old_name, "dlpreload") == 0)
     {
       return 0;
     }
@@ -1549,7 +1555,7 @@ find_module (handle, dir, libdir, dlname
 	    }
 
 	  sprintf (filename, "%s/%s", libdir, dlname);
-	  error = (tryall_dlopen (handle, filename) != 0);
+	  error = (tryall_dlopen (handle, filename, NULL) != 0);
 	  LT_DLFREE (filename);
 
 	  if (!error)
@@ -1581,7 +1587,7 @@ find_module (handle, dir, libdir, dlname
 	  strcat(filename, objdir);
 	  strcat(filename, dlname);
 
-	  error = tryall_dlopen (handle, filename) != 0;
+	  error = tryall_dlopen (handle, filename, NULL) != 0;
 	  LT_DLFREE (filename);
 	  if (!error)
 	    {
@@ -1604,7 +1610,7 @@ find_module (handle, dir, libdir, dlname
 	  }
 	strcat(filename, dlname);
 
-	error = (tryall_dlopen (handle, filename) != 0);
+	error = (tryall_dlopen (handle, filename, NULL) != 0);
 	LT_DLFREE (filename);
 	if (!error)
 	  {
@@ -1719,7 +1725,7 @@ find_file (basename, search_path, pdir, 
       strcpy(filename+lendir, basename);
       if (handle)
 	{
-	  if (tryall_dlopen (handle, filename) == 0)
+	  if (tryall_dlopen (handle, filename, NULL) == 0)
 	    {
 	      result = (xmlsec_lt_ptr) handle;
 	      goto cleanup;
@@ -2032,7 +2038,7 @@ xmlsec_lt_dlopen (filename)
       /* xmlsec_lt_dlclose()ing yourself is very bad!  Disallow it.  */
       LT_DLSET_FLAG (handle, LT_DLRESIDENT_FLAG);
 
-      if (tryall_dlopen (&newhandle, 0) != 0)
+      if (tryall_dlopen (&newhandle, 0, NULL) != 0)
 	{
 	  LT_DLFREE (handle);
 	  return 0;
@@ -2324,7 +2330,7 @@ xmlsec_lt_dlopen (filename)
 #ifdef LTDL_SYSSEARCHPATH
 		   && !find_file (basename, sys_search_path, 0, &newhandle)
 #endif
-		   )) && tryall_dlopen (&newhandle, filename))
+		   )) && tryall_dlopen (&newhandle, filename, NULL))
 	{
 	  LT_DLFREE (handle);
 	  goto cleanup;