From 164fb009ec3b78d6c271a7326eed669778bb9fa6 Mon Sep 17 00:00:00 2001 From: Chamil Elladeniya Date: Thu, 16 Feb 2023 12:06:02 +0530 Subject: [PATCH] Quote the multipart boundary header parameter value --- .../org/ballerinalang/net/http/HttpUtil.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/stdlib/http/src/main/java/org/ballerinalang/net/http/HttpUtil.java b/stdlib/http/src/main/java/org/ballerinalang/net/http/HttpUtil.java index b0592a535256..a330e44cce86 100644 --- a/stdlib/http/src/main/java/org/ballerinalang/net/http/HttpUtil.java +++ b/stdlib/http/src/main/java/org/ballerinalang/net/http/HttpUtil.java @@ -107,6 +107,7 @@ import java.util.stream.Collectors; import static io.netty.handler.codec.http.HttpHeaderNames.CACHE_CONTROL; +import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_TYPE; import static org.ballerinalang.jvm.observability.ObservabilityConstants.CONFIG_CLIENT_HTTP_URL_DISABLED; import static org.ballerinalang.jvm.observability.ObservabilityConstants.PROPERTY_HTTP_HOST; import static org.ballerinalang.jvm.observability.ObservabilityConstants.PROPERTY_HTTP_PORT; @@ -1100,11 +1101,20 @@ public static String getContentTypeFromTransportMessage(HttpCarbonMessage transp * @return The boundary string that was extracted from header or the newly generated one */ public static String addBoundaryIfNotExist(HttpCarbonMessage transportMessage, String contentType) { - String boundaryString; String boundaryValue = HeaderUtil.extractBoundaryParameter(contentType); - boundaryString = boundaryValue != null ? sanitizeBoundary(boundaryValue) : - HttpUtil.addBoundaryParameter(transportMessage, contentType); - return boundaryString; + if (boundaryValue != null) { + boundaryValue = sanitizeBoundary(boundaryValue); + boolean validateContentType = MimeUtil.isValidateContentType(contentType); + if (!validateContentType) { + String headerValue = HeaderUtil.getHeaderValue(contentType); + MapValue paramMap = HeaderUtil.getParamMap(contentType); + paramMap.put(BOUNDARY, MimeUtil.includeQuotes(boundaryValue)); + contentType = HeaderUtil.appendHeaderParams(new StringBuilder(headerValue).append(";"), paramMap); + transportMessage.setHeader(String.valueOf(CONTENT_TYPE), contentType); + } + return boundaryValue; + } + return HttpUtil.addBoundaryParameter(transportMessage, contentType); } /**