* sbr/mf.c: fix buffer overrun with absurdly long addresses
(only causes crashes if scan is run with '-width 16536' or similar)
+ * sbr/context_foil.c, sbr/context_read.c, sbr/context_save.c:
+ mark 'no context' with NULL rather than "/dev/null" so we don't
+ inadvertently try to lock /dev/null (which takes up to a minute
+ in some locking configurations and makes post very slow).
+
2005-11-13 Oliver Kiddle <okiddle@yahoo.co.uk>
* bug #7833: uip/Makefile.in: remove link to install-mh that caused
{
register struct node *np;
- defpath = context = "/dev/null";
+ /* In fact, nobody examines defpath in code paths where
+ * it's been set by us -- the uses in the source tree are:
+ * 1 sbr/context_read.c uses it only after setting it itself
+ * 2 uip/install_mh.c uses it only after setting it itself
+ * 3 uip/mshcmds.c and uip/mark.c print it if given the -debug switch
+ * A worthwhile piece of code cleanup would be to make 1 and
+ * 2 use a local variable and just delete 3.
+ *
+ * Similarly, context and ctxpath are not really used
+ * outside the context_* routines. It might be worth combining
+ * them into one file so the variables can be made static.
+ */
+
+ /* We set context to NULL to indicate that no context file
+ * is to be read. (Using /dev/null doesn't work because we
+ * would try to lock it, which causes timeouts with some
+ * locking methods.)
+ */
+ defpath = context = NULL;
/*
* If path is given, create a minimal profile/context list
if ((cp = getenv ("MHCONTEXT")) == (char *)0 || *cp == '\0')
cp = context;
+ /* context is NULL if context_foil() was called to disable use of context */
+ if (!cp) {
+ ctxpath = NULL;
+ return;
+ }
+
ctxpath = getcpy (m_maildir (cp));
if ((ib = lkfopen (ctxpath, "r"))) {
register struct node *np;
FILE *out;
sigset_t set, oset;
+
+ /* No context in use -- silently ignore any changes! */
+ if (!ctxpath)
+ return;
if (!(ctxflags & CTXMOD))
return;