e152e0e79dc79619147eb1c31572f403f779f105
[mmh] / test / tests / bad-input / test-header
1 #!/bin/sh
2 #
3 # Test bogus and strange headers
4
5
6 . "$MH_TEST_COMMON"
7
8 expected=$MH_TEST_DIR/$$.expected
9
10 # Write message with bogus header field (missing blank line, really).
11
12 msgfile="`mhpath b`"
13 msgnum="${msgfile##*/}"
14 cat >"$msgfile" <<!
15 Date: Sun, 18 Dec 2005 00:52:39 +0100
16 From: foo@example.edu
17 To: bar@example.edu
18 Subject: test
19 This is a multi-part message in MIME format.
20
21 I am a stupid spammer.
22 !
23
24 runandcheck "scan $msgnum" <<!
25 ??Format error (message $msgnum) in component 5
26   $msgnum  2005-12-18 00:52  foo@example.edu    test
27 !
28
29 runandcheck "show $msgnum" <<!
30 show: message format error in component #5
31 !
32
33
34
35 # check m_getfld() handling of empty header field
36
37 msgfile="`mhpath b`"
38 msgnum="${msgfile##*/}"
39 printf 'Date: Sat, 12 Jan 2013 09:07:01 -0600\nReceived:' >"$msgfile"
40
41 runandcheck "scan l" <<!
42 ??Format error (message $msgnum) in component 2
43   $msgnum  2013-01-12 09:07                     
44 !
45
46
47
48 # check m_getfld() handling of excessively long header field name
49
50 msgfile="`mhpath b`"
51 msgnum="${msgfile##*/}"
52 cat >"$msgfile" <<!
53 Date: Tue, 15 Jan 2013 21:13:12 -0600
54 ThisHeaderFieldNameIsWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayTooLong: OK
55 !
56
57 runandcheck "scan l" <<!
58 scan: line "ThisHeaderFieldNameIsWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayTooLong: OK" too long
59 ??Format error (message $msgnum) in component 2
60   $msgnum  2013-01-15 21:13                     
61 !
62
63
64
65 # check m_getfld() handling of header field name with whitespace
66
67 msgfile="`mhpath b`"
68 msgnum="${msgfile##*/}"
69 cat >"$msgfile" <<!
70 Date: Thu, 17 Jan 2013 19:33:46 -0600
71 A header field name with whitespace: foo
72 Subject: Will this be printed?
73
74 Test
75
76 !
77
78 runandcheck "scan l" <<!
79 ??Format error (message $msgnum) in component 2
80   $msgnum  2013-01-17 19:33                     
81 !
82
83
84
85 # check m_getfld() handling of header field name without a colon
86
87 msgfile="`mhpath b`"
88 msgnum="${msgfile##*/}"
89 cat >"$msgfile" <<!
90 Date: Thu, 17 Jan 2013 19:33:46 -0600
91 A_header_field_name_without_a_colon_..._or_is_this_the_first_line_of_the_body_question-mark
92 Subject: Will this be printed?
93
94 Test
95
96 !
97
98 runandcheck "scan l" <<!
99 ??Format error (message $msgnum) in component 2
100   $msgnum  2013-01-17 19:33                     
101 !
102
103
104
105 # check m_getfld() handling of empty field name
106
107 msgfile="`mhpath b`"
108 msgnum="${msgfile##*/}"
109 cat >"$msgfile" <<!
110 Date: Thu, 17 Jan 2013 19:33:46 -0600
111 : foo
112 Subject: Will this be printed?
113
114 Test
115
116 !
117
118 runandcheck "scan l" <<!
119 ??Format error (message $msgnum) in component 2
120   $msgnum  2013-01-17 19:33                     
121 !
122
123
124
125
126 # check m_getfld() handling of dashed body separator (as in drafts)
127
128 msgfile="`mhpath b`"
129 msgnum="${msgfile##*/}"
130 cat >"$msgfile" <<!
131 Date: Thu, 17 Jan 2013 19:33:46 -0600
132 ----------
133 Subject: Will this be printed?
134
135 Test
136
137 !
138
139 runandcheck "scan l" <<!
140   $msgnum  2013-01-17 19:33                     
141 !
142
143
144 msgfile="`mhpath b`"
145 msgnum="${msgfile##*/}"
146 cat >"$msgfile" <<!
147 Date: Thu, 17 Jan 2013 19:33:46 -0600
148 -
149 Subject: Will this be printed?
150
151 Test
152
153 !
154
155 runandcheck "scan l" <<!
156   $msgnum  2013-01-17 19:33                     
157 !
158
159
160 msgfile="`mhpath b`"
161 msgnum="${msgfile##*/}"
162 cat >"$msgfile" <<!
163 Date: Thu, 17 Jan 2013 19:33:46 -0600
164 -----foo
165 Subject: Will this be printed?
166
167 Test
168
169 !
170
171 runandcheck "scan l" <<!
172 ??Format error (message $msgnum) in component 2
173   $msgnum  2013-01-17 19:33                     
174 !
175
176
177 msgfile="`mhpath b`"
178 msgnum="${msgfile##*/}"
179 cat >"$msgfile" <<!
180 Date: Thu, 17 Jan 2013 19:33:46 -0600
181 -foo
182 Subject: Will this be printed?
183
184 Test
185
186 !
187
188 runandcheck "scan l" <<!
189 ??Format error (message $msgnum) in component 2
190   $msgnum  2013-01-17 19:33                     
191 !
192
193
194 msgfile="`mhpath b`"
195 msgnum="${msgfile##*/}"
196 cat >"$msgfile" <<!
197 Date: Thu, 17 Jan 2013 19:33:46 -0600
198 --- --- ---
199 Subject: Will this be printed?
200
201 Test
202
203 !
204
205 runandcheck "scan l" <<!
206 ??Format error (message $msgnum) in component 2
207   $msgnum  2013-01-17 19:33                     
208 !
209
210
211 # valid headers that might be treated as body separators but should not
212
213 msgfile="`mhpath b`"
214 msgnum="${msgfile##*/}"
215 cat >"$msgfile" <<!
216 Date: Thu, 17 Jan 2013 19:33:46 -0600
217 -: strange but valid header name
218 -------: also a valid header name
219 -dash: nothing special if it start with a dash
220 -------dash: or with many dashes
221 -..|.-|...|....: could even be morse code ;-)
222 sort</etc/passwd|lp&&date: ... o ar command lins *eek*
223 Subject: This will be printed!
224
225 Test
226
227 !
228
229 runandcheck "scan l" <<!
230   $msgnum  2013-01-17 19:33                     This will be printed!
231 !