1 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/conf/dynamicmaps.cf postfix-2.11.0/conf/dynamicmaps.cf
2 --- postfix-2.11.0.orig/conf/dynamicmaps.cf 1970-01-01 01:00:00.000000000 +0100
3 +++ postfix-2.11.0/conf/dynamicmaps.cf 2014-03-05 18:10:38.674082232 +0100
5 +# Postfix dynamic maps configuration file.
7 +# The first match found is the one that is used. The only wildcard
8 +# allowed is '*', which matches everything. The first %s is expanded
11 +#type location of .so file name of open function
12 +#==== ================================ =====================
13 +* /usr/lib/postfix/dict_%s.so dict_%s_open
14 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/dns/Makefile.in postfix-2.11.0/src/dns/Makefile.in
15 --- postfix-2.11.0.orig/src/dns/Makefile.in 2014-03-05 18:10:21.197415405 +0100
16 +++ postfix-2.11.0/src/dns/Makefile.in 2014-03-05 18:10:38.670748897 +0100
19 INC_DIR = ../../include
21 -.c.o:; $(CC) $(CFLAGS) -c $*.c
22 +.c.o:; $(CC) -fPIC $(CFLAGS) -c $*.c
30 - $(AR) $(ARFL) $(LIB) $?
32 + gcc -shared -Wl,-soname,libpostfix-dns.so.1 -o $(LIB) $(OBJS)
34 $(LIB_DIR)/$(LIB): $(LIB)
36 - $(RANLIB) $(LIB_DIR)/$(LIB)
38 update: $(LIB_DIR)/$(LIB) $(HDRS)
40 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/global/Makefile.in postfix-2.11.0/src/global/Makefile.in
41 --- postfix-2.11.0.orig/src/global/Makefile.in 2014-03-05 18:10:21.277415407 +0100
42 +++ postfix-2.11.0/src/global/Makefile.in 2014-03-05 18:10:38.670748897 +0100
44 canon_addr.o cfg_parser.o cleanup_strerror.o cleanup_strflags.o \
45 clnt_stream.o conv_time.o db_common.o debug_peer.o debug_process.o \
46 defer.o deliver_completed.o deliver_flock.o deliver_pass.o \
47 - deliver_request.o dict_ldap.o dict_mysql.o dict_pgsql.o \
49 dict_proxy.o dict_sqlite.o domain_list.o dot_lockfile.o dot_lockfile_as.o \
50 dsb_scan.o dsn.o dsn_buf.o dsn_mask.o dsn_print.o dsn_util.o \
51 ehlo_mask.o ext_prop.o file_id.o flush_clnt.o header_opts.o \
54 INC_DIR = ../../include
56 +LDAPSO = dict_ldap.so
57 +MYSQLSO = dict_mysql.so
58 +PGSQLSO = dict_pgsql.so
59 +SQLITESO= dict_sqlite.so
61 -.c.o:; $(CC) $(CFLAGS) -c $*.c
62 +.c.o:; $(CC) -fPIC $(CFLAGS) -c $*.c
70 - $(AR) $(ARFL) $(LIB) $?
72 + gcc -shared -Wl,-soname,libpostfix-global.so.1 -o $(LIB) $(OBJS)
74 +$(LDAPSO): dict_ldap.o $(LIB)
75 + gcc -shared -Wl,-soname,dict_ldap.so -o $@ $? -lldap -llber -L../../lib -lutil -L. -lglobal
77 +$(MYSQLSO): dict_mysql.o $(LIB)
78 + gcc -shared -Wl,-soname,dict_mysql.so -o $@ $? -lmysqlclient -L../../lib -lutil -L. -lglobal
80 +$(PGSQLSO): dict_pgsql.o $(LIB)
81 + gcc -shared -Wl,-soname,dict_pgsql.so -o $@ $? -lpq -L../../lib -lutil -L. -lglobal
83 +$(SQLITESO): dict_sqlite.o $(LIB)
84 + gcc -shared -Wl,-soname,dict_sqlite.so -o $@ $? -lsqlite3 -L../../lib -lutil -L. -lglobal
86 $(LIB_DIR)/$(LIB): $(LIB)
88 - $(RANLIB) $(LIB_DIR)/$(LIB)
90 -update: $(LIB_DIR)/$(LIB) $(HDRS)
91 +$(LIB_DIR)/$(LDAPSO): $(LDAPSO)
92 + cp $(LDAPSO) $(LIB_DIR)
94 +$(LIB_DIR)/$(MYSQLSO): $(MYSQLSO)
95 + cp $(MYSQLSO) $(LIB_DIR)
97 +$(LIB_DIR)/$(PGSQLSO): $(PGSQLSO)
98 + cp $(PGSQLSO) $(LIB_DIR)
100 +$(LIB_DIR)/$(SQLITESO): $(SQLITESO)
101 + cp $(SQLITESO) $(LIB_DIR)
103 +update: $(LIB_DIR)/$(LIB) $(LIB_DIR)/${LDAPSO} $(LIB_DIR)/${MYSQLSO} $(LIB_DIR)/${PGSQLSO} $(LIB_DIR)/${SQLITESO} $(HDRS)
106 cmp -s $$i $(INC_DIR)/$$i 2>/dev/null || cp $$i $(INC_DIR); \
108 lint $(DEFS) $(SRCS) $(LINTFIX)
111 - rm -f *.o $(LIB) *core $(TESTPROG) junk
112 + rm -f *.o $(LIB) $(LDAPSO) $(MYSQLSO) $(PGSQLSO) $(SQLITESO) *core $(TESTPROG) junk
116 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/global/mail_conf.c postfix-2.11.0/src/global/mail_conf.c
117 --- postfix-2.11.0.orig/src/global/mail_conf.c 2014-03-05 18:10:21.314082074 +0100
118 +++ postfix-2.11.0/src/global/mail_conf.c 2014-03-05 18:10:38.670748897 +0100
120 if (dict_load_file_xt(CONFIG_DICT, path) == 0)
121 msg_fatal("open %s: %m", path);
124 +#ifndef NO_DYNAMIC_MAPS
125 + path = concatenate(var_config_dir, "/", "dynamicmaps.cf", (char *) 0);
126 + dict_open_dlinfo(path);
132 /* mail_conf_flush - discard configuration dictionary */
133 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/global/mail_dict.c postfix-2.11.0/src/global/mail_dict.c
134 --- postfix-2.11.0.orig/src/global/mail_dict.c 2014-03-05 18:10:21.377415407 +0100
135 +++ postfix-2.11.0/src/global/mail_dict.c 2014-03-05 18:10:38.670748897 +0100
138 static const DICT_OPEN_INFO dict_open_info[] = {
139 DICT_TYPE_PROXY, dict_proxy_open,
141 - DICT_TYPE_LDAP, dict_ldap_open,
144 - DICT_TYPE_MYSQL, dict_mysql_open,
147 - DICT_TYPE_PGSQL, dict_pgsql_open,
150 - DICT_TYPE_SQLITE, dict_sqlite_open,
152 DICT_TYPE_MEMCACHE, dict_memcache_open,
155 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/global/mail_params.c postfix-2.11.0/src/global/mail_params.c
156 --- postfix-2.11.0.orig/src/global/mail_params.c 2014-03-05 18:10:21.657415409 +0100
157 +++ postfix-2.11.0/src/global/mail_params.c 2014-03-05 18:10:38.670748897 +0100
159 #ifdef STRCASECMP_IN_STRINGS_H
162 +#include <safe_open.h>
163 +#include <mymalloc.h>
165 /* Utility library. */
168 char *var_debug_peer_list;
169 int var_debug_peer_level;
170 char *var_reject_reply_msg_access_denied;
171 +int var_command_maxtime;
172 int var_fault_inj_code;
173 char *var_bounce_service;
174 char *var_cleanup_service;
179 +static char *read_file(const char *name)
182 + VSTRING *why=vstring_alloc(1);
183 + VSTRING *new_name=vstring_alloc(1);
184 + VSTREAM *vp=safe_open(name, O_RDONLY, 0, NULL, -1, -1, why);
187 + * Ugly macros to make complex expressions less unreadable.
189 +#define SKIP(start, var, cond) \
190 + for (var = start; *var && (cond); var++);
194 + for (p = (s) + strlen(s); p > (s) && ISSPACE(p[-1]); p--); \
199 + msg_fatal("%s: unable to open: %s",name,vstring_str(why));
201 + vstring_get_nonl(new_name,vp);
202 + vstream_fclose(vp);
203 + SKIP(vstring_str(new_name),ret,ISSPACE(*ret));
207 + vstring_free(new_name);
211 /* mail_params_init - configure built-in parameters */
213 void mail_params_init()
214 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/master/Makefile.in postfix-2.11.0/src/master/Makefile.in
215 --- postfix-2.11.0.orig/src/master/Makefile.in 2014-03-05 18:10:21.104082072 +0100
216 +++ postfix-2.11.0/src/master/Makefile.in 2014-03-05 18:10:38.670748897 +0100
218 INC_DIR = ../../include
219 BIN_DIR = ../../libexec
221 -.c.o:; $(CC) $(CFLAGS) -c $*.c
222 +.c.o:; $(CC) `for i in $(LIB_OBJ); do [ $$i = $@ ] && echo -fPIC; done` $(CFLAGS) -c $*.c
230 - $(AR) $(ARFL) $(LIB) $?
232 + gcc -shared -Wl,-soname,libpostfix-master.so.1 -o $(LIB) $(LIB_OBJ)
234 $(LIB_DIR)/$(LIB): $(LIB)
235 cp $(LIB) $(LIB_DIR)/$(LIB)
236 - $(RANLIB) $(LIB_DIR)/$(LIB)
238 $(BIN_DIR)/$(PROG): $(PROG)
239 cp $(PROG) $(BIN_DIR)
240 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/util/Makefile.in postfix-2.11.0/src/util/Makefile.in
241 --- postfix-2.11.0.orig/src/util/Makefile.in 2014-03-05 18:10:21.430748742 +0100
242 +++ postfix-2.11.0/src/util/Makefile.in 2014-03-05 18:10:38.670748897 +0100
244 username.c valid_hostname.c vbuf.c vbuf_print.c vstream.c \
245 vstream_popen.c vstring.c vstring_vstream.c watchdog.c \
246 write_buf.c sane_basename.c format_tv.c allspace.c \
247 - allascii.c load_file.c killme_after.c vstream_tweak.c \
248 + allascii.c load_file.c killme_after.c vstream_tweak.c load_lib.c \
249 pass_trigger.c edit_file.c inet_windowsize.c \
250 unix_pass_fd_fix.c dict_cache.c valid_utf_8.c dict_thash.c \
251 ip_match.c nbbio.c base32_code.c dict_test.c \
253 chroot_uid.o cidr_match.o clean_env.o close_on_exec.o concatenate.o \
254 ctable.o dict.o dict_alloc.o dict_cdb.o dict_cidr.o dict_db.o \
255 dict_dbm.o dict_debug.o dict_env.o dict_ht.o dict_lmdb.o dict_ni.o dict_nis.o \
256 - dict_nisplus.o dict_open.o dict_pcre.o dict_regexp.o dict_sdbm.o \
257 + dict_nisplus.o dict_open.o dict_regexp.o dict_sdbm.o \
258 dict_static.o dict_tcp.o dict_unix.o dir_forest.o doze.o dummy_read.o \
259 dummy_write.o duplex_pipe.o environ.o events.o exec_command.o \
260 fifo_listen.o fifo_trigger.o file_limit.o find_inet.o fsspace.o \
262 username.o valid_hostname.o vbuf.o vbuf_print.o vstream.o \
263 vstream_popen.o vstring.o vstring_vstream.o watchdog.o \
264 write_buf.o sane_basename.o format_tv.o allspace.o \
265 - allascii.o load_file.o killme_after.o vstream_tweak.o \
266 + allascii.o load_file.o killme_after.o vstream_tweak.o load_lib.o \
267 pass_trigger.o edit_file.o inet_windowsize.o \
268 unix_pass_fd_fix.o dict_cache.o valid_utf_8.o dict_thash.o \
269 ip_match.o nbbio.o base32_code.o dict_test.o \
271 sigdelay.h sock_addr.h spawn_command.h split_at.h stat_as.h \
272 stringops.h sys_defs.h timed_connect.h timed_wait.h trigger.h \
273 username.h valid_hostname.h vbuf.h vbuf_print.h vstream.h vstring.h \
274 - vstring_vstream.h watchdog.h format_tv.h load_file.h killme_after.h \
275 + vstring_vstream.h watchdog.h format_tv.h load_file.h killme_after.h load_lib.h \
276 edit_file.h dict_cache.h dict_thash.h ip_match.h nbbio.h base32_code.h \
277 dict_fail.h warn_stat.h dict_sockmap.h line_number.h timecmp.h \
278 slmdb.h compat_va_copy.h
280 CFLAGS = $(DEBUG) $(OPT) $(DEFS)
281 FILES = Makefile $(SRCS) $(HDRS)
283 +PCRESO = dict_pcre.so
285 TESTPROG= dict_open dup2_pass_on_exec events exec_command fifo_open \
286 fifo_rdonly_bug fifo_rdwr_bug fifo_trigger fsspace fullname \
290 INC_DIR = ../../include
291 +LIBS = $(LIB_DIR)/$(LIB) $(LIB_DIR)/$(PCRESO)
293 -.c.o:; $(CC) $(CFLAGS) -c $*.c
294 +.c.o:; $(CC) -fPIC $(CFLAGS) -c $*.c
298 @@ -131,15 +133,19 @@
302 +$(PCRESO): dict_pcre.o
303 + gcc -shared -Wl,-soname,dict_pcre.so -o $@ $? -lpcre -L. -lutil
306 - $(AR) $(ARFL) $(LIB) $?
308 + gcc -shared -Wl,-soname,libpostfix-util.so.1 -o $(LIB) $(OBJS) -ldl
310 $(LIB_DIR)/$(LIB): $(LIB)
312 - $(RANLIB) $(LIB_DIR)/$(LIB)
314 -update: $(LIB_DIR)/$(LIB) $(HDRS)
315 +$(LIB_DIR)/$(PCRESO): $(PCRESO)
316 + cp $(PCRESO) $(LIB_DIR)
318 +update: $(LIBS) $(HDRS)
321 cmp -s $$i $(INC_DIR)/$$i 2>/dev/null || cp $$i $(INC_DIR); \
323 lint $(DEFS) $(SRCS) $(LINTFIX)
326 - rm -f *.o $(LIB) *core $(TESTPROG) junk $(MAKES) *.tmp
327 + rm -f *.o $(LIB) $(PCRESO) *core $(TESTPROG) \
328 + junk $(MAKES) *.tmp
332 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/util/dict.h postfix-2.11.0/src/util/dict.h
333 --- postfix-2.11.0.orig/src/util/dict.h 2014-03-05 18:10:21.547415410 +0100
334 +++ postfix-2.11.0/src/util/dict.h 2014-03-05 18:10:38.670748897 +0100
337 extern ARGV *dict_mapnames(void);
339 +#ifndef NO_DYNAMIC_MAPS
341 + * Interface for dynamic map loading.
344 + const char *pattern;
345 + const char *soname;
346 + const char *openfunc;
349 +extern void dict_open_dlinfo(const char *path);
350 +extern DLINFO *dict_open_dlfind(const char *type);
354 * High-level interface, with logical dictionary names.
356 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/util/dict_open.c postfix-2.11.0/src/util/dict_open.c
357 --- postfix-2.11.0.orig/src/util/dict_open.c 2014-03-05 18:10:21.444082074 +0100
358 +++ postfix-2.11.0/src/util/dict_open.c 2014-03-05 18:10:38.674082232 +0100
363 +#include <sys/stat.h>
366 /* Utility library. */
373 +#ifndef NO_DYNAMIC_MAPS
374 +#include <load_lib.h>
375 +#include <vstring.h>
376 +#include <vstream.h>
377 +#include <vstring_vstream.h>
382 * lookup table for available map types.
386 DICT_TYPE_NETINFO, dict_ni_open,
388 +#ifndef MAX_DYNAMIC_MAPS
390 DICT_TYPE_PCRE, dict_pcre_open,
392 +#endif /* MAX_DYNAMIC_MAPS */
393 #ifdef HAS_POSIX_REGEXP
394 DICT_TYPE_REGEXP, dict_regexp_open,
397 dict_type, dict_name);
398 if (dict_open_hash == 0)
400 - if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0)
401 - return (dict_surrogate(dict_type, dict_name, open_flags, dict_flags,
402 - "unsupported dictionary type: %s", dict_type));
403 + if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0) {
404 +#ifndef NO_DYNAMIC_MAPS
406 + VSTRING *lib, *func;
408 + DICT *(*open) (const char *, int, int);
409 + DLINFO *dl=dict_open_dlfind(dict_type);
412 + msg_fatal("%s: unsupported dictionary type: %s", myname, dict_type);
413 +#ifndef NO_DYNAMIC_MAPS
414 + lib=vstring_alloc(1);
415 + vstring_sprintf(lib,dl->soname,dict_type);
416 + if (stat(vstring_str(lib),&st) < 0) {
417 + msg_fatal("%s: unsupported dictionary type: %s (%s not found. Is the postfix-%s package installed?)",
418 + myname, dict_type, vstring_str(lib), dict_type);
420 + func=vstring_alloc(1);
421 + vstring_sprintf(func,dl->openfunc,dict_type);
422 + fn[0].name = vstring_str(func);
423 + fn[0].ptr = (void**)&open;
425 + load_library_symbols(vstring_str(lib), fn, NULL);
426 + dict_open_register(dict_type, open);
427 + dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type);
429 + vstring_free(func);
432 + if (msg_verbose>1) {
433 + msg_info("%s: calling %s open routine",myname,dict_type);
435 if ((dict = dp->open(dict_name, open_flags, dict_flags)) == 0)
436 return (dict_surrogate(dict_type, dict_name, open_flags, dict_flags,
437 "cannot open %s:%s: %m", dict_type, dict_name));
442 +#ifndef NO_DYNAMIC_MAPS
443 +static DLINFO *dict_dlinfo;
445 +void dict_open_dlinfo(const char *path)
447 + char *myname="dict_open_dlinfo";
448 + VSTREAM *conf_fp=vstream_fopen(path,O_RDONLY,0);
449 + VSTRING *buf = vstring_alloc(100);
456 + dict_dlinfo=(DLINFO*)mvect_alloc(&vector,sizeof(DLINFO),3,NULL,NULL);
459 + msg_warn("%s: cannot open %s. No dynamic maps will be allowed.",
462 + while (vstring_get_nonl(buf,conf_fp) != VSTREAM_EOF) {
463 + cp = vstring_str(buf);
465 + if (*cp == '#' || *cp == '\0')
467 + argv = argv_split(cp, " \t");
468 + if (argv->argc != 3) {
469 + msg_fatal("%s: Expected \"pattern .so-name function\" at line %d",
472 + if (argv->argv[1][0] != '/') {
473 + msg_fatal("%s: .so name must begin with a \"/\" at line %d",
476 + if (nelm >= vector.nelm) {
477 + dict_dlinfo=(DLINFO*)mvect_realloc(&vector,vector.nelm+3);
479 + dict_dlinfo[nelm].pattern = mystrdup(argv->argv[0]);
480 + dict_dlinfo[nelm].soname = mystrdup(argv->argv[1]);
481 + dict_dlinfo[nelm].openfunc = mystrdup(argv->argv[2]);
486 + if (nelm >= vector.nelm) {
487 + dict_dlinfo=(DLINFO*)mvect_realloc(&vector,vector.nelm+1);
489 + dict_dlinfo[nelm].pattern = NULL;
490 + dict_dlinfo[nelm].soname = NULL;
491 + dict_dlinfo[nelm].openfunc = NULL;
493 + vstream_fclose(conf_fp);
497 +DLINFO *dict_open_dlfind(const char *type)
504 + for (dp=dict_dlinfo; dp->pattern; dp++) {
505 + if (strcmp(dp->pattern,type)==0 || strcmp(dp->pattern,"*")==0)
510 +#endif /* !NO_DYNAMIC_MAPS */
515 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/util/load_lib.c postfix-2.11.0/src/util/load_lib.c
516 --- postfix-2.11.0.orig/src/util/load_lib.c 1970-01-01 01:00:00.000000000 +0100
517 +++ postfix-2.11.0/src/util/load_lib.c 2014-03-05 18:10:38.674082232 +0100
523 +/* library loading wrappers
525 +/* #include <load_lib.h>
527 +/* extern int load_library_symbols(const char *, LIB_FN *, LIB_FN *);
528 +/* const char *libname;
529 +/* LIB_FN *libfuncs;
533 +/* This module loads functions from libraries, returnine pointers
534 +/* to the named functions.
536 +/* load_library_symbols() loads all of the desired functions, and
537 +/* returns zero for success, or exits via msg_fatal().
540 +/* msg(3) diagnostics interface
542 +/* Problems are reported via the msg(3) diagnostics routines:
543 +/* library not found, symbols not found, other fatal errors.
547 +/* The Secure Mailer license must be distributed with this software.
550 +/* Hewlett-Packard Company
551 +/* 3404 Harmony Road
552 +/* Fort Collins, CO 80528, USA
555 +/* IBM T.J. Watson Research
557 +/* Yorktown Heights, NY 10598, USA
560 +/* System libraries. */
562 +#include "sys_defs.h"
566 +#if defined(HAS_DLOPEN)
568 +#elif defined(HAS_SHL_LOAD)
572 +/* Application-specific. */
575 +#include "load_lib.h"
577 +extern int load_library_symbols(const char * libname, LIB_FN * libfuncs, LIB_FN * libdata)
579 + char *myname = "load_library_symbols";
582 +#if defined(HAS_DLOPEN)
586 + handle=dlopen(libname,RTLD_NOW);
589 + msg_fatal("%s: dlopen failure loading %s: %s", myname, libname, emsg);
593 + for (fn=libfuncs; fn->name; fn++) {
594 + *(fn->ptr) = dlsym(handle,fn->name);
597 + msg_fatal("%s: dlsym failure looking up %s in %s: %s", myname,
598 + fn->name, libname, emsg);
600 + if (msg_verbose>1) {
601 + msg_info("loaded %s = %lx",fn->name, *((long*)(fn->ptr)));
607 + for (fn=libdata; fn->name; fn++) {
608 + *(fn->ptr) = dlsym(handle,fn->name);
611 + msg_fatal("%s: dlsym failure looking up %s in %s: %s", myname,
612 + fn->name, libname, emsg);
614 + if (msg_verbose>1) {
615 + msg_info("loaded %s = %lx",fn->name, *((long*)(fn->ptr)));
619 +#elif defined(HAS_SHL_LOAD)
622 + handle = shl_load(libname,BIND_IMMEDIATE,0);
625 + for (fn=libfuncs; fn->name; fn++) {
626 + if (shl_findsym(&handle,fn->name,TYPE_PROCEDURE,fn->ptr) != 0) {
627 + msg_fatal("%s: shl_findsym failure looking up %s in %s: %m",
628 + myname, fn->name, libname);
630 + if (msg_verbose>1) {
631 + msg_info("loaded %s = %x",fn->name, *((long*)(fn->ptr)));
637 + for (fn=libdata; fn->name; fn++) {
638 + if (shl_findsym(&handle,fn->name,TYPE_DATA,fn->ptr) != 0) {
639 + msg_fatal("%s: shl_findsym failure looking up %s in %s: %m",
640 + myname, fn->name, libname);
642 + if (msg_verbose>1) {
643 + msg_info("loaded %s = %x",fn->name, *((long*)(fn->ptr)));
649 + msg_fatal("%s: need dlopen or shl_load support for dynamic libraries",
654 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/util/load_lib.h postfix-2.11.0/src/util/load_lib.h
655 --- postfix-2.11.0.orig/src/util/load_lib.h 1970-01-01 01:00:00.000000000 +0100
656 +++ postfix-2.11.0/src/util/load_lib.h 2014-03-05 18:10:38.674082232 +0100
658 +#ifndef _LOAD_LIB_H_INCLUDED_
659 +#define _LOAD_LIB_H_INCLUDED_
665 +/* library loading wrappers
667 +/* #include "load_lib.h"
672 + * External interface.
674 +/* NULL name terminates list */
675 +typedef struct LIB_FN {
680 +extern int load_library_symbols(const char *, LIB_FN *, LIB_FN *);
685 +/* The Secure Mailer license must be distributed with this software.
688 +/* Hewlett-Packard Company
689 +/* 3404 Harmony Road
690 +/* Fort Collins, CO 80528, USA
693 +/* IBM T.J. Watson Research
695 +/* Yorktown Heights, NY 10598, USA
699 diff -durN -x '*~' -x '*.orig' -x '*.rej' postfix-2.11.0.orig/src/util/sys_defs.h postfix-2.11.0/src/util/sys_defs.h
700 --- postfix-2.11.0.orig/src/util/sys_defs.h 2014-03-05 18:10:21.654082076 +0100
701 +++ postfix-2.11.0/src/util/sys_defs.h 2014-03-05 18:10:38.674082232 +0100
703 #define STATFS_IN_SYS_VFS_H
704 #define PREPEND_PLUS_TO_OPTSTRING
705 #define HAS_POSIX_REGEXP
707 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
708 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
709 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
711 #define STATFS_IN_SYS_VFS_H
712 #define PREPEND_PLUS_TO_OPTSTRING
713 #define HAS_POSIX_REGEXP
715 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
716 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
717 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
720 #define STATFS_IN_SYS_VFS_H
721 #define HAS_POSIX_REGEXP
722 +#define HAS_SHL_LOAD
723 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
724 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
725 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
726 @@ -1005,6 +1008,7 @@
728 #define STATFS_IN_SYS_VFS_H
729 #define HAS_POSIX_REGEXP
730 +#define HAS_SHL_LOAD
731 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
732 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
733 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"