]> diplodocus.org Git - nmh/blob - test/bad-input/test-header
h/prototypes.h: Remove duplicate prototype for pwd().
[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 - 70B ]
73
74 This is a multi-part message in MIME format.
75
76 I am a stupid spammer.
77 EOF
78 run_prog mhshow last > "$actual" 2>&1
79 check "$expected" "$actual" : mhshow with bogus header field
80
81 # check m_getfld() handling of empty header field
82 start_test 'm_getfld() handling of empty header field'
83 msgfile="$MH_TEST_DIR/Mail/inbox/12"
84 printf 'Date: Sat, 12 Jan 2013 09:07:01 -0600\nReceived:' >"$msgfile"
85 cat >"$expected" <<EOF
86 12 01/12
87 EOF
88 cat >"$expected_err" <<EOF
89 scan: eof encountered in field "Received"
90 ??Format error (message 12) in component 2
91 EOF
92
93 run_prog scan -width 13 last >"$actual" 2>"$actual_err"
94 check "$expected" "$actual" : m_getfld, empty header output
95 check "$expected_err" "$actual_err" : m_getfld, empty header error
96
97 # check m_getfld() handling of excessively long header field name
98 start_test 'm_getfld() handling of excessively long header field name'
99 msgfile="$MH_TEST_DIR/Mail/inbox/13"
100 cat >"$msgfile" <<EOF
101 Date: Tue, 15 Jan 2013 21:13:12 -0600
102 ThisHeaderFieldNameIsWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayTooLong: OK
103 EOF
104 cat >"$expected" <<EOF
105 13 01/15
106 EOF
107
108 run_prog scan -width 13 last >"$actual" 2>"$actual_err"
109 check "$expected" "$actual" : m_getfld with excessively long header field name
110 # Cygwin has a BUFSIZ of 1024 so the error message gets truncated.
111 # Deal with that by grepping to verify that scan showed the proper error.
112 verify_string_in_file() {
113 if grep "$1" "$2" >/dev/null; then
114 :
115 else
116 echo "$0: did not receive expected error message \"$1\""
117 failed=`expr ${failed:-0} + 1`
118 fi
119 }
120 verify_string_in_file 'scan: field name "ThisHeaderFieldNameIsWa' "$actual_err"
121 verify_string_in_file 'exceeds 997' "$actual_err"
122 verify_string_in_file '??Format error (message 13) in component 2' "$actual_err"
123 rm -f "$actual_err"
124
125 finish_test
126 exit $failed