1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
#!/bin/sh
######################################################
#
# Test bogus headers (no blank line before body, etc.)
#
######################################################
set -e
if test -z "${MH_OBJ_DIR}"; then
srcdir=`dirname "$0"`/../..
MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR
fi
. "$MH_OBJ_DIR/test/common.sh"
setup_test
expected="$MH_TEST_DIR/$$.expected"
expected_err="$MH_TEST_DIR/$$.expected_err"
actual="$MH_TEST_DIR/$$.actual"
actual_err="$MH_TEST_DIR/$$.actual_err"
# Write message with bogus header field (missing blank line, really).
msgfile="$MH_TEST_DIR/Mail/inbox/11"
cat >"$msgfile" <<EOF
Date: Sun, 18 Dec 2005 00:52:39 +0100
From: foo@example.edu
To: bar@example.edu
Subject: test
This is a multi-part message in MIME format.
I am a stupid spammer.
EOF
# check scan
cat >"$expected" <<EOF
11 12/18 foo@example.edu test<<This is a multi-part message in MIME forma
EOF
run_prog scan -width 80 last > "$actual" 2>&1
check "$expected" "$actual"
# check show (mhl)
cat >"$expected" <<EOF
(Message inbox:11)
Date: Sun, 18 Dec 2005 00:52:39 +0100
To: bar@example.edu
From: foo@example.edu
Subject: test
This is a multi-part message in MIME format.
I am a stupid spammer.
EOF
run_prog show last > "$actual" 2>&1
check "$expected" "$actual"
# check mhshow
cat >"$expected" <<EOF
Date: Sun, 18 Dec 2005 00:52:39 +0100
To: bar@example.edu
From: foo@example.edu
Subject: test
part text/plain 70
This is a multi-part message in MIME format.
I am a stupid spammer.
EOF
run_prog mhshow last > "$actual" 2>&1
check "$expected" "$actual"
# check m_getfld() handling of empty header field
msgfile="$MH_TEST_DIR/Mail/inbox/12"
printf 'Date: Sat, 12 Jan 2013 09:07:01 -0600\nReceived:' >"$msgfile"
cat >"$expected" <<EOF
12 01/12
EOF
cat >"$expected_err" <<EOF
scan: eof encountered in field "Received"
??Format error (message 12) in component 2
EOF
run_prog scan -width 13 last >"$actual" 2>"$actual_err"
check "$expected" "$actual"
check "$expected_err" "$actual_err"
# check m_getfld() handling of excessively long header field name
msgfile="$MH_TEST_DIR/Mail/inbox/13"
cat >"$msgfile" <<EOF
Date: Tue, 15 Jan 2013 21:13:12 -0600
ThisHeaderFieldNameIsWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayTooLong: OK
EOF
cat >"$expected" <<EOF
13 01/15
EOF
run_prog scan -width 13 last >"$actual" 2>"$actual_err"
check "$expected" "$actual"
# Cygwin has a BUFSIZ of 1024 so the error message gets truncated.
# Deal with that by grepping to verify that scan showed the proper error.
verify_string_in_file() {
if grep "$1" "$2" >/dev/null; then
:
else
echo "$0: did not receive expected error message \"$1\""
failed=`expr ${failed:-0} + 1`
fi
}
verify_string_in_file 'scan: field name "ThisHeaderFieldNameIsWa' "$actual_err"
verify_string_in_file 'exceeds 997' "$actual_err"
verify_string_in_file '??Format error (message 13) in component 2' "$actual_err"
rm -f "$actual_err"
# check m_getfld() handling of long header field name without a colon
msgfile="$MH_TEST_DIR/Mail/inbox/14"
cat >"$msgfile" <<EOF
Date: Thu, 17 Jan 2013 19:33:46 -0600
If a header field name has at least 512 characters without a newline or colon, it will raise a format error in m_getfld(). Here is a test of that. 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
Test
EOF
cat >"$expected" <<EOF
14 01/17
EOF
cat >"$expected_err" <<EOF
scan: eol encountered in field "If a header field name has at least 512 characters without a newline or colon, it will raise a format error in m_getfld(). Here is a test of that. 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901"
??Format error (message 14) in component 2
EOF
run_prog scan -width 13 last >"$actual" 2>"$actual_err"
check "$expected" "$actual"
check "$expected_err" "$actual_err"
exit $failed
|