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