6b826a00d7fbfc7fd6b6a20ee70b0fcaeb97d3c8
[mmh] / test / tests / bad-input / test-header
1 #!/bin/sh
2 ######################################################
3 #
4 # Test bogus headers (no blank line before body, etc.)
5 #
6 ######################################################
7
8 . "$MH_TEST_COMMON"
9
10 expected=$MH_TEST_DIR/$$.expected
11
12 # Write message with bogus header field (missing blank line, really).
13 msgfile="$(mhpath b)"
14 msgnum="$(basename $msgfile)"
15
16 cat > $msgfile <<EOF
17 Date: Sun, 18 Dec 2005 00:52:39 +0100
18 From: foo@example.edu
19 To: bar@example.edu
20 Subject: test
21 This is a multi-part message in MIME format.
22
23 I am a stupid spammer.
24 EOF
25
26
27 # check scan
28 runandcheck "scan $msgnum" <<!
29   11  2005-12-18 00:52  foo@example.edu    test
30 !
31
32
33 # check show
34 runandcheck "show $msgnum" <<!
35 Date:    Sun, 18 Dec 2005 00:52:39 +0100
36 From:    foo@example.edu
37 To:      bar@example.edu
38 Subject: test
39
40 part       text/plain                  70
41
42 This is a multi-part message in MIME format.
43
44 I am a stupid spammer.
45 !
46
47
48
49 # check m_getfld() handling of empty header field
50 msgfile="`mhpath b`"
51 printf 'Date: Sat, 12 Jan 2013 09:07:01 -0600\nReceived:' >"$msgfile"
52 runandcheck "scan l" <<!
53 scan: eof encountered in field "Received"
54 ??Format error (message 12) in component 2
55   12  2013-01-12 09:07                     
56 !
57
58
59
60 # check m_getfld() handling of excessively long header field name
61
62 msgfile="$MH_TEST_DIR/Mail/inbox/13"
63 cat >"$msgfile" <<EOF
64 Date: Tue, 15 Jan 2013 21:13:12 -0600
65 ThisHeaderFieldNameIsWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayTooLong: OK
66 EOF
67 runandcheck "scan l" <<!
68 scan: field name "ThisHeaderFieldNameIsWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayTooLong" exceeds 997 bytes
69 ??Format error (message 13) in component 2
70   13  2013-01-15 21:13                     
71 !
72
73
74
75 # # Cygwin has a BUFSIZ of 1024 so the error message gets truncated.
76 # # Deal with that by grepping to verify that scan showed the proper error.
77 # verify_string_in_file() {
78 #   if grep "$1" "$2" >/dev/null; then
79 #     :
80 #   else
81 #     echo "$0: did not receive expected error message \"$1\""
82 #     failed=`expr ${failed:-0} + 1`
83 #   fi
84 # }
85 # verify_string_in_file 'scan: field name "ThisHeaderFieldNameIsWa' "$actual_err"
86 # verify_string_in_file 'exceeds 997' "$actual_err"
87 # verify_string_in_file '??Format error (message 13) in component 2' "$actual_err"
88 # rm -f "$actual_err"
89
90
91
92
93 # check m_getfld() handling of long header field name without a colon
94
95 msgfile="$MH_TEST_DIR/Mail/inbox/14"
96 cat >"$msgfile" <<EOF
97 Date: Thu, 17 Jan 2013 19:33:46 -0600
98 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
99
100 Test
101
102
103 EOF
104
105 runandcheck "scan l" <<!
106 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"
107 ??Format error (message 14) in component 2
108   14  2013-01-17 19:33                     
109 !
110