Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37890748
en ru br
ALT Linux repos
S:2.5.8-alt3
5.0: 2.5.7-alt2
4.1: 2.5.7-alt2
4.0: 2.5.7-alt2
3.0: 2.5.7-alt1.2

Group :: System/Libraries
RPM: libmcrypt

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: libmcrypt-2.5.7-alt-libdl.patch
Download


diff -Naur libmcrypt-2.5.7/lib/Makefile.am libmcrypt-2.5.7.new/lib/Makefile.am
--- libmcrypt-2.5.7/lib/Makefile.am	2003-03-08 20:21:44 +0300
+++ libmcrypt-2.5.7.new/lib/Makefile.am	2003-03-28 13:10:24 +0300
@@ -11,7 +11,7 @@
 libmcrypt_la_LDFLAGS =  \
 	  -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
 	  -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
-	  -export-symbols libmcrypt.sym @LIBLTDL@ 
+	  -export-symbols libmcrypt.sym -ldl
 libmcrypt_la_LIBADD = @EXTRA_OBJECTS@
 
 m4datadir = $(datadir)/aclocal
diff -Naur libmcrypt-2.5.7/lib/mcrypt_modules.c libmcrypt-2.5.7.new/lib/mcrypt_modules.c
--- libmcrypt-2.5.7/lib/mcrypt_modules.c	2003-01-07 10:17:18 +0300
+++ libmcrypt-2.5.7.new/lib/mcrypt_modules.c	2003-03-28 13:13:30 +0300
@@ -17,6 +17,7 @@
  * Boston, MA 02111-1307, USA.
  */
 
+
 #ifndef LIBDEFS_H
 #define LIBDEFS_H
 #include <libdefs.h>
@@ -29,6 +30,31 @@
 # define fputs(x, y) 
 #endif
 
+#ifndef USE_LTDL
+WIN32DLL_DEFINE
+void *mcrypt_dlopen_ext ( const char *filename) {
+	void *ret;
+	char full_path[1054];
+
+	if (strlen(filename)>sizeof(full_path)) return NULL;
+
+	strcpy(full_path, filename);
+	ret = dlopen(full_path, RTLD_LAZY);
+
+	if (ret==NULL) {
+#ifndef WIN32
+		strcat(full_path, ".so");
+#else
+		strcat(full_path, ".dll");
+#endif
+		ret = dlopen(full_path, RTLD_LAZY);
+	}
+	return ret;
+
+}
+#endif
+
+
 extern const mcrypt_preloaded mps[];
 
 #define MAX_MOD_SIZE 1024
@@ -126,7 +152,7 @@
 
 WIN32DLL_DEFINE
 void* mcrypt_dlopen ( mcrypt_dlhandle* handle, const char* a_directory, const char *m_directory, const char *filename) {
-	
+#ifdef USE_LTDL	
 	char paths[1539];
 
 	if (!filename || !(*filename)) {
@@ -159,7 +185,39 @@
 	handle->handle = lt_dlopenext(filename);
 
 	return handle->handle;
+#else
+	char full_path[1050];
+	
+	if (strlen(filename) > sizeof( handle->name))
+		return MCRYPT_FAILED;
+	else
+		strcpy( handle->name, filename);
+
+	if (a_directory!=NULL) {
+	    strncpy(full_path, a_directory, 512);
+	    strcat(full_path, "/");
+	    strncat( full_path, filename, 512);
+	    handle->handle = mcrypt_dlopen_ext(full_path);
+	}
+	if (handle->handle==NULL) {
+		if (m_directory!=NULL) {
+			strncpy(full_path, m_directory, 512);
+			strcat(full_path, "/");
+			strncat( full_path, filename, 510);
+			handle->handle = mcrypt_dlopen_ext(full_path);
+		}
+	}
+	if (handle->handle==NULL) {
+		if (LIBDIR!=NULL) {
+			strncpy(full_path, LIBDIR, 512);
+			strcat(full_path, "/");
+			strncat( full_path, filename, 510);
+			handle->handle = mcrypt_dlopen_ext(full_path);
+		}
+	}
+	return handle->handle;
 
+#endif
 }
 
 WIN32DLL_DEFINE
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin