diff options
Diffstat (limited to 'testing/cyrus-sasl/0030-dont_use_la_files_for_opening_plugins.patch')
-rw-r--r-- | testing/cyrus-sasl/0030-dont_use_la_files_for_opening_plugins.patch | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/testing/cyrus-sasl/0030-dont_use_la_files_for_opening_plugins.patch b/testing/cyrus-sasl/0030-dont_use_la_files_for_opening_plugins.patch deleted file mode 100644 index 14a322496..000000000 --- a/testing/cyrus-sasl/0030-dont_use_la_files_for_opening_plugins.patch +++ /dev/null @@ -1,134 +0,0 @@ ---- 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); |