Skip to content

Commit 0c890e3

Browse files
committed
Empty form params should not be omitted (#340)
1 parent fee7a6d commit 0c890e3

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletRequest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -496,14 +496,16 @@ protected Map<String, List<String>> getFormUrlEncodedParametersMap() {
496496
urlEncodedFormParameters = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
497497
for (String parameter : rawBodyContent.split(FORM_DATA_SEPARATOR)) {
498498
String[] parameterKeyValue = parameter.split(HEADER_KEY_VALUE_SEPARATOR);
499-
if (parameterKeyValue.length < 2) {
499+
if (parameterKeyValue.length < 1) {
500500
continue;
501501
}
502502
List<String> values = new ArrayList<>();
503503
if (urlEncodedFormParameters.containsKey(parameterKeyValue[0])) {
504504
values = urlEncodedFormParameters.get(parameterKeyValue[0]);
505505
}
506-
values.add(decodeValueIfEncoded(parameterKeyValue[1]));
506+
if (parameterKeyValue.length > 1) {
507+
values.add(decodeValueIfEncoded(parameterKeyValue[1]));
508+
}
507509
urlEncodedFormParameters.put(decodeValueIfEncoded(parameterKeyValue[0]), values);
508510
}
509511
Timer.stop("SERVLET_REQUEST_GET_FORM_PARAMS");

aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestFormTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,21 @@ public void postForm_getParamsBase64Encoded_expectAllParams() {
123123
assertEquals(2, params.size());
124124
assertEquals(true, params.containsKey(PART_KEY_1));
125125
}
126+
127+
/**
128+
* issue #340
129+
*/
130+
@Test
131+
public void postForm_emptyParamPresent() {
132+
AwsProxyRequest proxyRequest = new AwsProxyRequestBuilder("/form", "POST")
133+
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED).build();
134+
String body = PART_KEY_1 + "=" + "&" + PART_KEY_2 + "=" + PART_VALUE_2;
135+
proxyRequest.setBody(body);
136+
137+
HttpServletRequest request = new AwsProxyHttpServletRequest(proxyRequest, null, null);
138+
Map<String, String[]> params = request.getParameterMap();
139+
assertNotNull(params);
140+
assertEquals(2, params.size());
141+
assertEquals(true, params.containsKey(PART_KEY_1));
142+
}
126143
}

0 commit comments

Comments
 (0)