From 5a2c6747b69a312e350b658b4446f845f70b671d Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Fri, 1 Feb 2019 15:08:20 +0100 Subject: mcom: check if mail is formatted sensibly --- mcom | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'mcom') diff --git a/mcom b/mcom index 69bf1ee..c2f55c0 100755 --- a/mcom +++ b/mcom @@ -40,6 +40,27 @@ stampdate() { fi } +checksensible() { + awk ' + /^$/ { + seenheader=1 + exit + } + !(/^[^ \t][^ \t]*[ \t]*:/ || /^[ \t]/) { + bad=1 + print "invalid header line: "$0 >"/dev/stderr" + } + END { + if (!seenheader) { + print "warning: message does not contain an empty line between headers and body." >"/dev/stderr" + exit 1 + } + if (bad) + exit 1 + } +' "$1" +} + stripempty() { tmp=$(mktemp -t mcom.XXXXXX) msed 's/^[ \t]*$//d' "$1" >"$tmp" @@ -441,13 +462,18 @@ while :; do c= if ! ${EDITOR:-vi} $draft; then c=d - fi - stripempty $draft - if mmime -c <$draft && ! needs_multipart $draft; then - automime= else - automime=1 - do_mime + if checksensible $draft; then + stripempty $draft + if mmime -c <$draft && ! needs_multipart $draft; then + automime= + else + automime=1 + do_mime + fi + else + printf '\n' + fi fi ;; justsend) -- cgit 1.4.1