Earl Hood [Sat, 6 Feb 2010 07:45:47 +0000 (07:45 +0000)]
Fixed variable declaration so older compilers will not complain.
I.e. Older compilers may not support C99, so variables must be
declared at the beginning of a block.
Earl Hood [Thu, 4 Feb 2010 01:39:21 +0000 (01:39 +0000)]
* Bug #15213, #18635: The use of the insecure m_scratch() and
m_tmpfil() functions have been replaced by m_mktemp()
or m_mktemp2() functions (defined in sbr/m_mktemp.c).
The new functions use mkstemp() to securely create
temporary files to avoid the numerous race conditions
that exist with the old functions. This does assume
that mkstemp() is available. Unsure if we need to
create an alternative implementation if mkstemp() is
not available. More information about new temp file
functions in m_mktemp.c, including the support for
MHTMPDIR, TMPDIR, and TMP envvars.
NOTE: The files sbr/m_scratch.c and sbr/m_tmpfil.c should be removed.
Until more testing verifies changes to support new functions have not
broken functionality, the files are be left in the tree, but comments
have been added stating the functions in them should not be called.
Earl Hood [Wed, 3 Feb 2010 05:56:56 +0000 (05:56 +0000)]
* mts/smtp/smtp.c: added SASL support if mts configuration
setting is set to "sendmail". This is useful if sendmail
conf option is to a custom script that creates a proxy
connection to an smtp server.
* sbr/mts.c: added support for MHMTSCONF and MHMTSUSERCONF
envvars. The former specifies an alternative system
mts.conf to use. The later specifies a user-specific
mts.conf to use. This one will be read after the system
conf, so the user's conf only needs to set options they
want to override. The MHMTSUSERCONF allows a user to set
personal alternative mail submission methods w/o affecting
other users on the system.
* uip/whom.c: added SASL-based options so address checking
can work against a server that requires SASL.
David Levine [Wed, 30 Dec 2009 01:42:45 +0000 (01:42 +0000)]
* uip/mhlistsbr.c, uip/mhlsbr.c, uip/picksbr.c: cast
pointers to unsigned long before casting to unsigned int
to avoid warnings on 64-bit about casting from pointer
to int of different size.
David Levine [Fri, 25 Dec 2009 14:47:39 +0000 (14:47 +0000)]
* uip/inc.c: gcc 4.4.1 noticed that maildir could have been
used before initialization. In fact, if that code was ever
reached, maildir would never have been initialized. It's in
an adios call, so replaced with NULL.
David Levine [Mon, 21 Dec 2009 17:18:04 +0000 (17:18 +0000)]
* mts/smtp/smtp.c: In sm_auth_sasl (), removed zeroing of
sasl_inbuffer because it could be used in sm_fget (). Also,
removed allocation of sasl_inbuffer because that was done in
either smtp_init () or sendmail_init ().
Eric Gillespie [Sat, 17 Jan 2009 16:47:29 +0000 (16:47 +0000)]
* test/runtest, test/tests/inc/test-deb359167,
test/tests/inc/test-eom-align, test/tests/manpages/test-manpages:
Load common.sh via absolute path, otherwise some /bin/sh
(e.g. dash) can't load it.
* uip/Makefile.in, uip/new.c, test/tests/new/test-basic: Add new
program, and fn/fp/unseen symlinks.
* test/{runtest,setup-test}: Move MH profile under Mail directory
so each test script will have its own to muck with, if needed.
* h/Makefile.in, h/crawl_folders.h, sbr/Makefile.in,
sbr/crawl_folders.c, uip/folder.c: Extract the folder crawling
code from folder.c into new crawl_folders function, using a
callback to assemble the folder info in folder.c. Drop compare
function and use strcmp instead. Rename addfold and addir to
add_folder and add_children (add dir vs. add folder?
confusing names).
Ken Hornstein [Fri, 16 Jan 2009 02:28:54 +0000 (02:28 +0000)]
Massive overhaul of networking code. Changes:
- All networking interfaces now converted to new APIs (getaddrinfo() and
the like). All networking now supports IPv6 (with the exception of
the built-in FTP client).
- SASL security layers are now supported for SMTP.
- Command-line and profile-based selection of the SMTP server and port.
Peter Maydell [Fri, 26 Dec 2008 21:54:19 +0000 (21:54 +0000)]
* sbr/m_getfld.c: fix two bugs which could cause us to walk off
the beginning of the stdio or prefix-string buffer when checking
for presence of the end-of-message delimiter in some situations.
This might cause inc to dump core if you were unlucky. (This was
Debian bug 359167.)
* test/tests/inc/{md5sums,msgheader.txt,test-deb359167,
test-eom-align,fromline.txt,filler.txt,deb359167.mbox}: new tests
both for the specific problem and to try to check various alignments
of the eom string with the stdio buffer ending.
* test/common.sh: Added some functions for doing progress indicators.
David Levine [Thu, 23 Oct 2008 18:38:22 +0000 (18:38 +0000)]
* h/mh.h: raised NAMESZ from 128 to 999. RFC 2822 limits line
lengths to 998 characters, so a header name can be at most that long.
m_getfld limits header names to 2 less than NAMESZ, which is fine,
because header names must be followed by a colon. Add one for
terminating NULL.
Eric Gillespie [Thu, 14 Aug 2008 19:47:29 +0000 (19:47 +0000)]
* test/setup-test: Don't run autogen.sh unless needed. Build in a
blddir under the temporary directory so as not to interfere with
whatever the developer may be doing in the source directory.
If the temporary directory already exists, rebuild and install it.
Eric Gillespie [Thu, 14 Aug 2008 00:56:38 +0000 (00:56 +0000)]
* h/mhparse.h: Move interfaces also used by mhbuildsbr.c here
from mhparse.c.
* uip/Makefile.in (mhbuild): Build with mhparse.o.
* uip/mhbuildsbr.c: Drop the duplication of mhparse.c.
* uip/mhbuild.c, uip/mhlist.c, uip/mhn.c, uip/mhshow.c,
uip/mhstore.c, uip/mhtest.c: Drop check swdeclaration, which is
now in mhparse.h.
* uip/mhparse.c: Move some declarations to mhparse.h, and remove
'static' from the definitions here.
(get_ctinfo): Take magic mhbuild support from mhbuildsbr.c's copy,
and adapt callers.
(incl_name_value, extract_name_value): Move from mhbuildsbr.c to
support get_ctinfo change).
(get_content, open7Bit): Add Content-Disposition support, added to
mhbuildsbr.c's copy in mhbuildsbr.c r1.12 (PatchSet 549).
(InitText): Default to CHARSET_UNSPECIFIED instead of "US-ASCII",
as mhbuildsbr.c's copy did. Explain termproc.
(openBase64, openQuoted, open7Bit): Fix comment from r1.5:
suffixes, not prefixes.
(openMail): Explain showproc.
* test/tests/mhshow/test-cte-binary: Add test for
Content-Transfer-Encoding: binary (Debian #136976).
* test/tests/mhbuild/test-forw: Add an mhbuild test, testing forw
with and without RFC-934 mode. More mhbuild tests would be nice.
Eric Gillespie [Wed, 13 Aug 2008 18:27:36 +0000 (18:27 +0000)]
* test/tests/bad-input/test-header: Add test for it.
* sbr/m_getfld.c: If we reach the end of the line without finding
a ':' when parsing a header field, treat that line as the
beginning of the body rather than blowing up. These messages are
usually spam, but it's nice to be able to at least scan them.
Eric Gillespie [Wed, 13 Aug 2008 01:01:12 +0000 (01:01 +0000)]
* test/tests/mhshow/test-qp: Test various valid and invalid
escape sequences.
* uip/mhparse.c (openQuoted): Simplify the decode-or-show for loop by
peeking ahead to the next byte(s) when encountering '=', and just let
invalid escape sequences through as literals (fixes bug #15245).
Peter Maydell [Tue, 5 Aug 2008 21:06:00 +0000 (21:06 +0000)]
uip/folder.c: chdir(nmhdir) in main rather than in dodir, which
is called many times. Drop the chdir in get_folder_info, which
served no purpose at all. If struct stat has d_type (BSD), use
that to skip processing (strcmp, stat, and so on) of message
files, mostly undoing the slow-down from the last change.
Plus autoconf machinery to detect d_type field. Patch from Eric Gillespie.
Peter Maydell [Sun, 3 Aug 2008 18:47:56 +0000 (18:47 +0000)]
bug #23319: rework the way we handle the working directory when invoking
the user's shell, so that we don't have issues when the cwd contains a
space or shell special character.
Peter Maydell [Sun, 3 Aug 2008 13:32:17 +0000 (13:32 +0000)]
When doing an if-test on the result of a function which returns a string
result, check whether the string is non-empty (as the documentation says we
do). Previously we were always testing the integer 'value'.
* test/runtest: cat test-temp-dir only once. Destroy and create
test Mail hierarchy here, so each test has its own independent
test data.
* test/setup-test: Drop needless pushd/popd, which don't exist in
sh anyway. Don't use aclocal, which is part of automake.
Don't create Mail hierarchy here (see test/runtest).
* test/tests/folder/test-create, tests/folder/test-total: Drop
unused BINDIR.
* test/tests/scan/test-scan: Write expected and actual output to
files and diff them. This way, if the output differs, diff
provides the FAILing exit code and shows the differences.
Peter Maydell [Thu, 22 May 2008 10:21:48 +0000 (10:21 +0000)]
Factor out common code for writing ls shell command. Rework its length
checking so it doesn't rely on the return value of sprintf(), for the
benefit of SunOS 4.
David Levine [Sun, 18 May 2008 13:56:58 +0000 (13:56 +0000)]
* sbr/addrsbr.c: removed "err" from conditional, because gcc
correctly warned that it would always evaluate as true. It's
the address of a static array.
David Levine [Tue, 13 May 2008 02:39:04 +0000 (02:39 +0000)]
* configure.in, INSTALL: if --enable-masquerade is not
specified to configure, enable all supported masquerade forms.
This allows users to masquerade with the default
configuration. That seems to be more worthwhile now than
trying to prevent users from using it, especially with
single-user installations or those where a user can edit
etc/mts.conf.
Peter Maydell [Sun, 4 May 2008 20:58:35 +0000 (20:58 +0000)]
bug #23167: sbr/ruserpass.c (ruserpass): make bad permissions on .netrc be
an instantly fatal error. Previously we returned an error value; however, no
caller was checking it. So now ruserpass() has a void return type.
Peter Maydell [Sun, 4 May 2008 16:09:08 +0000 (16:09 +0000)]
* bug #23163: various minor fixes for the benefit of older Unixes
(specifically SunOS 4): reintroduce strerror() substitute implementation;
provide memmove() substitute implementation
* bug #23163: fix broken 'build outside source directory' feature
* bug #23162: sbr/dtime.c: fix stray HAVE_TM_GMTOFF that wasn't updated
to the new macro name.
Peter Maydell [Tue, 29 Apr 2008 21:05:30 +0000 (21:05 +0000)]
Correct various places in smtp.c where the reply string might not have been
correctly NUL-terminated. Includes a fix for a particularly nasty and long
standing screwup where the buffer length counting in smhear() was totally
broken for continued lines from the server.
Peter Maydell [Tue, 29 Apr 2008 20:59:04 +0000 (20:59 +0000)]
Fix SASL issue properly, by making sm_rrecord() and thus sm_hear() set
the length of the reply string correctly (the SASL libraries now care
if you pass in the wrong length).
Peter Maydell [Sat, 5 Apr 2008 19:04:41 +0000 (19:04 +0000)]
* bug #18655: fix use of admonish() for a fatal error (should
be adios(); only actual effect would be wrong exit code).
Thanks to Craig Leres for spotting this.
Joel Reicher [Sun, 4 Nov 2007 11:54:32 +0000 (11:54 +0000)]
Return type of (*done)() changed to void. default_done() replaced by
exit(). All dead code "return 1" lines removed from *_done()s and replaced
by explicit "return 1" following done() calls in main()s (they should
never be reached). This should make cleaning up program termination
structures easier.
Joel Reicher [Sun, 4 Nov 2007 04:47:17 +0000 (04:47 +0000)]
Change link-time overriding of done() to run-time reassigning of equivalent
(*done)(). This should make changing the return type of done and the
rationalisation of exit code easier.
Bill Wohler [Mon, 24 Sep 2007 07:02:03 +0000 (07:02 +0000)]
The MH web site is now http://rand-mh.sourceforge.net/ and the MH
book is now at http://rand-mh.sourceforge.net/book/.
Changed Questions
1.02 ...current version? mailutils 1.2
1.03 Where can I get MH? Debian 4.0 nmh 1.1-RC4, update links, mu 1.2
1.04 ...references for MH? Refer to SourceForge
1.06 How...print a MH manual? Refer to SourceForge
2.17 How...build MH on a Mac? Use fink
4.05 ...tools to archive MH? Mention swish++, mairix, and namazu
Peter Maydell [Sun, 29 Apr 2007 19:36:14 +0000 (19:36 +0000)]
For gcc, make the default CFLAGS include -Wno-pointer-sign if the compiler
recognises it. gcc 4 now by default produces a large volume of these
warnings, which I believe are probably spurious and definitely a lot of
work to go through and fix. So we suppress them for now so that the other
warnings are more easily visible.
Joel Reicher [Fri, 13 Apr 2007 11:53:08 +0000 (11:53 +0000)]
Change all chars being passed to the ctype macros (isalph(), etc.) to
be unsigned chars, following through to change any other types as
necessary (e.g. comparison between two pointers). Not all chars have
been changed to unsigned chars; just those that were in danger of being
sign extended when passed to the int-taking ctype macros.
Joel Reicher [Tue, 10 Apr 2007 03:32:48 +0000 (03:32 +0000)]
Application of patch #5218: patch for bug #9742. Fixes a typo in the
size arg of snprintf(). mhlist output which used to have incorrect lines
such as
1.2 multipart/mixed 772
1.21 text/plain 9
1.22 multipart/mixed 162
now have the correct
1.2 multipart/mixed 772
1.2.1 text/plain 9
1.2.2 multipart/mixed 162