summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Hazel <ph10@hermes.cam.ac.uk>2005-03-22 15:02:34 +0000
committerPhilip Hazel <ph10@hermes.cam.ac.uk>2005-03-22 15:02:34 +0000
commit4754440d213e40463c4d3f4f75152825c5e702b0 (patch)
tree087bc8fa88247a69363a46cccb26f83a470f3d56
parent49c2d5ea04847f8f7f1344bfd73582e9a0d3b564 (diff)
Further tidies to the ${dlfunc code (thanks, Tony): redirect options are
always available (but do nothing when the facility isn't compiled). Improve the NewStuff text.
-rw-r--r--doc/doc-txt/NewStuff16
-rw-r--r--src/src/routers/redirect.c6
2 files changed, 13 insertions, 9 deletions
diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff
index 383c0f6f4..e6e55c745 100644
--- a/doc/doc-txt/NewStuff
+++ b/doc/doc-txt/NewStuff
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.28 2005/03/22 14:11:54 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.29 2005/03/22 15:02:34 ph10 Exp $
New Features in Exim
--------------------
@@ -46,12 +46,20 @@ PH/02 A new expansion item for dynamically loading and calling a locally-
set in Local/Makefile. The facility is not included by default (a
suitable error is given if you try to use it when it is not there.)
- You load and call the function like this:
+
+ If you enable EXPAND_DLFUNC, you should also be aware of the new redirect
+ router option forbid_filter_dlfunc. If you have unprivileged users on
+ your system who are permitted to create filter files, you might want to
+ set forbid_filter_dlfunc=true in the appropriate router, to stop them
+ using ${dlfunc to run code within Exim.
+
+ You load and call an external function like this:
${dlfunc{/some/file}{function}{arg1}{arg2}...}
- Once loaded, Exim remembers it so that it doesn't reload it in the same
- Exim process (but of course Exim does start new processes frequently).
+ Once loaded, Exim remembers the dynamically loaded object so that it
+ doesn't reload the same object file in the same Exim process (but of
+ course Exim does start new processes frequently).
There may be from zero to eight arguments to the function. When compiling
a local function that is to be called in this way, local_scan.h should be
diff --git a/src/src/routers/redirect.c b/src/src/routers/redirect.c
index 65b5e4099..c0c76322c 100644
--- a/src/src/routers/redirect.c
+++ b/src/src/routers/redirect.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/routers/redirect.c,v 1.7 2005/03/22 14:11:55 ph10 Exp $ */
+/* $Cambridge: exim/src/src/routers/redirect.c,v 1.8 2005/03/22 15:02:34 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -45,20 +45,16 @@ optionlist redirect_router_options[] = {
(void *)offsetof(redirect_router_options_block, bit_options) },
{ "forbid_file", opt_bool,
(void *)offsetof(redirect_router_options_block, forbid_file) },
- #ifdef EXPAND_DLFUNC
{ "forbid_filter_dlfunc", opt_bit | (RDON_DLFUNC << 16),
(void *)offsetof(redirect_router_options_block, bit_options) },
- #endif
{ "forbid_filter_existstest", opt_bit | (RDON_EXISTS << 16),
(void *)offsetof(redirect_router_options_block, bit_options) },
{ "forbid_filter_logwrite",opt_bit | (RDON_LOG << 16),
(void *)offsetof(redirect_router_options_block, bit_options) },
{ "forbid_filter_lookup", opt_bit | (RDON_LOOKUP << 16),
(void *)offsetof(redirect_router_options_block, bit_options) },
- #ifdef EXIM_PERL
{ "forbid_filter_perl", opt_bit | (RDON_PERL << 16),
(void *)offsetof(redirect_router_options_block, bit_options) },
- #endif
{ "forbid_filter_readfile", opt_bit | (RDON_READFILE << 16),
(void *)offsetof(redirect_router_options_block, bit_options) },
{ "forbid_filter_readsocket", opt_bit | (RDON_READSOCK << 16),