summaryrefslogtreecommitdiff
path: root/testing/libsasl/0030-dont_use_la_files_for_opening_plugins.patch
diff options
context:
space:
mode:
authorNicolas Reynolds <fauno@kiwwwi.com.ar>2011-10-07 17:33:04 -0300
committerNicolas Reynolds <fauno@kiwwwi.com.ar>2011-10-07 17:33:04 -0300
commit2302f1d28510fadb2dcfa119f28ed28f164845bf (patch)
treee7040e1c743f46bc60a7844275516e4404f6ac30 /testing/libsasl/0030-dont_use_la_files_for_opening_plugins.patch
parent2a9d1292ab60e8a2356fb3eeb36b8c3cfc22759b (diff)
parent5442e9b8f357932ed5d6cb46e90fcbf6f453469f (diff)
Merge branch 'master' of ssh://vparabola/home/parabola/abslibre-pre-mips64el
Conflicts: community/fotoxx/PKGBUILD community/gtkdialog/PKGBUILD community/hubbub/PKGBUILD community/libgdamm/PKGBUILD community/libparserutils/PKGBUILD community/mingw32-binutils/PKGBUILD community/mingw32-gcc-base/PKGBUILD community/mingw32-gcc/PKGBUILD community/mtpaint/PKGBUILD community/netsurf/PKGBUILD community/patchage/PKGBUILD community/qgo/PKGBUILD community/tomoyo-tools/PKGBUILD community/tre/PKGBUILD community/virtualbox/PKGBUILD core/net-tools/PKGBUILD core/openldap/PKGBUILD extra/epiphany/PKGBUILD extra/evince/PKGBUILD extra/evolution-data-server/PKGBUILD extra/evolution/PKGBUILD extra/exiv2/PKGBUILD extra/folks/PKGBUILD extra/gimp-ufraw/PKGBUILD extra/gnome-control-center/PKGBUILD extra/gnome-power-manager/PKGBUILD extra/gnome-python-desktop/PKGBUILD extra/gnome-python-extras/PKGBUILD extra/gvfs/PKGBUILD extra/jack/PKGBUILD extra/kdelibs/PKGBUILD extra/kdepim/PKGBUILD extra/koffice/PKGBUILD extra/libreoffice/PKGBUILD extra/libwebkit/PKGBUILD extra/mutter/PKGBUILD extra/nautilus/PKGBUILD extra/openmpi/PKGBUILD extra/pavucontrol/PKGBUILD extra/php/PKGBUILD extra/pidgin/PKGBUILD extra/postgresql/PKGBUILD extra/pulseaudio/PKGBUILD extra/pygobject2/PKGBUILD extra/swt/PKGBUILD extra/tomcat/PKGBUILD extra/totem/PKGBUILD extra/vigra/PKGBUILD extra/vte/PKGBUILD extra/xulrunner/PKGBUILD kde-unstable/calligra/PKGBUILD kde-unstable/kdebase-workspace/PKGBUILD multilib/lib32-atk/PKGBUILD multilib/lib32-gdk-pixbuf2/PKGBUILD multilib/lib32-glew/PKGBUILD multilib/lib32-glib2/PKGBUILD multilib/lib32-jack/PKGBUILD multilib/lib32-libpulse/PKGBUILD multilib/lib32-pango/PKGBUILD multilib/wine/PKGBUILD social/miniupnpc/PKGBUILD testing/icedtea-web-java7/PKGBUILD testing/sqlite3/PKGBUILD ~xihh/abiword/PKGBUILD
Diffstat (limited to 'testing/libsasl/0030-dont_use_la_files_for_opening_plugins.patch')
-rw-r--r--testing/libsasl/0030-dont_use_la_files_for_opening_plugins.patch134
1 files changed, 134 insertions, 0 deletions
diff --git a/testing/libsasl/0030-dont_use_la_files_for_opening_plugins.patch b/testing/libsasl/0030-dont_use_la_files_for_opening_plugins.patch
new file mode 100644
index 000000000..14a322496
--- /dev/null
+++ b/testing/libsasl/0030-dont_use_la_files_for_opening_plugins.patch
@@ -0,0 +1,134 @@
+--- a/lib/dlopen.c
++++ b/lib/dlopen.c
+@@ -247,105 +247,6 @@ static int _sasl_plugin_load(char *plugi
+ return result;
+ }
+
+-/* this returns the file to actually open.
+- * out should be a buffer of size PATH_MAX
+- * and may be the same as in. */
+-
+-/* We'll use a static buffer for speed unless someone complains */
+-#define MAX_LINE 2048
+-
+-static int _parse_la(const char *prefix, const char *in, char *out)
+-{
+- FILE *file;
+- size_t length;
+- char line[MAX_LINE];
+- char *ntmp = NULL;
+-
+- if(!in || !out || !prefix || out == in) return SASL_BADPARAM;
+-
+- /* Set this so we can detect failure */
+- *out = '\0';
+-
+- length = strlen(in);
+-
+- if (strcmp(in + (length - strlen(LA_SUFFIX)), LA_SUFFIX)) {
+- if(!strcmp(in + (length - strlen(SO_SUFFIX)),SO_SUFFIX)) {
+- /* check for a .la file */
+- strcpy(line, prefix);
+- strcat(line, in);
+- length = strlen(line);
+- *(line + (length - strlen(SO_SUFFIX))) = '\0';
+- strcat(line, LA_SUFFIX);
+- file = fopen(line, "r");
+- if(file) {
+- /* We'll get it on the .la open */
+- fclose(file);
+- return SASL_FAIL;
+- }
+- }
+- strcpy(out, prefix);
+- strcat(out, in);
+- return SASL_OK;
+- }
+-
+- strcpy(line, prefix);
+- strcat(line, in);
+-
+- file = fopen(line, "r");
+- if(!file) {
+- _sasl_log(NULL, SASL_LOG_WARN,
+- "unable to open LA file: %s", line);
+- return SASL_FAIL;
+- }
+-
+- while(!feof(file)) {
+- if(!fgets(line, MAX_LINE, file)) break;
+- if(line[strlen(line) - 1] != '\n') {
+- _sasl_log(NULL, SASL_LOG_WARN,
+- "LA file has too long of a line: %s", in);
+- return SASL_BUFOVER;
+- }
+- if(line[0] == '\n' || line[0] == '#') continue;
+- if(!strncmp(line, "dlname=", sizeof("dlname=") - 1)) {
+- /* We found the line with the name in it */
+- char *end;
+- char *start;
+- size_t len;
+- end = strrchr(line, '\'');
+- if(!end) continue;
+- start = &line[sizeof("dlname=")-1];
+- len = strlen(start);
+- if(len > 3 && start[0] == '\'') {
+- ntmp=&start[1];
+- *end='\0';
+- /* Do we have dlname="" ? */
+- if(ntmp == end) {
+- _sasl_log(NULL, SASL_LOG_DEBUG,
+- "dlname is empty in .la file: %s", in);
+- return SASL_FAIL;
+- }
+- strcpy(out, prefix);
+- strcat(out, ntmp);
+- }
+- break;
+- }
+- }
+- if(ferror(file) || feof(file)) {
+- _sasl_log(NULL, SASL_LOG_WARN,
+- "Error reading .la: %s\n", in);
+- fclose(file);
+- return SASL_FAIL;
+- }
+- fclose(file);
+-
+- if(!(*out)) {
+- _sasl_log(NULL, SASL_LOG_WARN,
+- "Could not find a dlname line in .la file: %s", in);
+- return SASL_FAIL;
+- }
+-
+- return SASL_OK;
+-}
+ #endif /* DO_DLOPEN */
+
+ /* loads a plugin library */
+@@ -499,18 +400,18 @@ int _sasl_load_plugins(const add_plugin_
+ if (length + pos>=PATH_MAX) continue; /* too big */
+
+ if (strcmp(dir->d_name + (length - strlen(SO_SUFFIX)),
+- SO_SUFFIX)
+- && strcmp(dir->d_name + (length - strlen(LA_SUFFIX)),
+- LA_SUFFIX))
++ SO_SUFFIX))
+ continue;
+
++ /* We only use .so files for loading plugins */
++
+ memcpy(name,dir->d_name,length);
+ name[length]='\0';
+
+- result = _parse_la(prefix, name, tmp);
+- if(result != SASL_OK)
+- continue;
+-
++ /* Create full name with path */
++ strncpy(tmp, prefix, PATH_MAX);
++ strncat(tmp, name, PATH_MAX);
++
+ /* skip "lib" and cut off suffix --
+ this only need be approximate */
+ strcpy(plugname, name + 3);