Skip to content

Commit 61092a4

Browse files
committed
Add tests for CR/LF rejection in SimpleSMTPHeader and SimpleNNTPHeader
1 parent 53939a6 commit 61092a4

2 files changed

Lines changed: 80 additions & 0 deletions

File tree

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* https://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
package org.apache.commons.net.nntp;
18+
19+
import static org.junit.jupiter.api.Assertions.assertEquals;
20+
import static org.junit.jupiter.api.Assertions.assertThrows;
21+
22+
import org.junit.jupiter.api.Test;
23+
24+
/**
25+
* Tests {@link SimpleNNTPHeader}.
26+
*/
27+
class SimpleNNTPHeaderTestCase {
28+
29+
@Test
30+
void testRejectCarriageReturnInConstructor() {
31+
assertThrows(IllegalArgumentException.class, () -> new SimpleNNTPHeader("foobar@foo.invalid", "Subject\rInjected: header"));
32+
}
33+
34+
@Test
35+
void testRejectLineFeedInAddHeaderField() {
36+
final SimpleNNTPHeader header = new SimpleNNTPHeader("foobar@foo.invalid", "Just testing");
37+
assertThrows(IllegalArgumentException.class, () -> header.addHeaderField("Organization", "Foobar, Inc.\nInjected: header"));
38+
}
39+
40+
@Test
41+
void testRejectLineFeedInAddNewsgroup() {
42+
final SimpleNNTPHeader header = new SimpleNNTPHeader("foobar@foo.invalid", "Just testing");
43+
assertThrows(IllegalArgumentException.class, () -> header.addNewsgroup("alt.test\nInjected: header"));
44+
}
45+
46+
@Test
47+
void testRejectLineFeedInConstructor() {
48+
assertThrows(IllegalArgumentException.class, () -> new SimpleNNTPHeader("foobar@foo.invalid", "Subject\nInjected: header"));
49+
}
50+
51+
@Test
52+
void testToString() {
53+
final SimpleNNTPHeader header = new SimpleNNTPHeader("foobar@foo.invalid", "Just testing");
54+
header.addNewsgroup("alt.test");
55+
header.addHeaderField("Organization", "Foobar, Inc.");
56+
assertEquals("From: foobar@foo.invalid\nNewsgroups: alt.test\nSubject: Just testing\nOrganization: Foobar, Inc.\n\n", header.toString());
57+
}
58+
}

src/test/java/org/apache/commons/net/smtp/SimpleSMTPHeaderTestCase.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,28 @@ void testToStringAddHeaderDate() {
105105
assertEquals("Date: dummy date\nFrom: from@here.invalid\n\n", header.toString());
106106
}
107107

108+
@Test
109+
void testRejectCarriageReturnInConstructor() {
110+
assertThrows(IllegalArgumentException.class, () -> new SimpleSMTPHeader("from@here.invalid", "to@there.invalid", "Subject\rInjected: header"));
111+
}
112+
113+
@Test
114+
void testRejectLineFeedInAddCC() {
115+
final SimpleSMTPHeader header = new SimpleSMTPHeader("from@here.invalid", null, null);
116+
assertThrows(IllegalArgumentException.class, () -> header.addCC("cc@there.invalid\nBcc: victim@there.invalid"));
117+
}
118+
119+
@Test
120+
void testRejectLineFeedInAddHeaderField() {
121+
final SimpleSMTPHeader header = new SimpleSMTPHeader("from@here.invalid", null, null);
122+
assertThrows(IllegalArgumentException.class, () -> header.addHeaderField("X-Header1", "value 1\nX-Injected: value 2"));
123+
}
124+
125+
@Test
126+
void testRejectLineFeedInConstructor() {
127+
assertThrows(IllegalArgumentException.class, () -> new SimpleSMTPHeader("from@here.invalid", "to@there.invalid", "Subject\nInjected: header"));
128+
}
129+
108130
@Test
109131
void testToStringNoFrom() {
110132
assertThrows(IllegalArgumentException.class, () -> new SimpleSMTPHeader(null, null, null));

0 commit comments

Comments
 (0)