We have a number of API components that include a textBody as part of the
multipart request.  In 2.5.12, these requests are being kicked out (while
in 2.5.10 they were fine.  changing the constant:

    <constant name="struts.multipart.validationRegex" value="(.*)"/>

to allow anything (as in the example) seems to fix the issue, but this
seems imprudent.  This is the code that's making the  API call, which seems
harmless enough:

              // using the
org.apache.http.entity.mime.MultipartEntityBuilder

        MultipartEntityBuilder builder = MultipartEntityBuilder.create();

        builder.addTextBody("record", docXml, ContentType.create(
"application/xml", Consts.UTF_8));

        builder.addTextBody(ACCOUNT_ID, accountId.toString());

        HttpPost post = new HttpPost(baseUrl + API_INGEST_UPDATE_FILES);

        post.setEntity(builder.build());

        CloseableHttpResponse response = getHttpClient().execute(post);


In looking deeper, (with the http requests on trace, we see multipart
boundaries of:

 Content-Type: multipart/form-data; boundary=BRKIypZ3Stvuclu7C*-*
CTbP2fNljGAOVk[\r][\n]


It looks like the RFC does include hyphens in the boundaries too:
https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html though I'm less
sure about other characters.  I worry this default regex will likely trip
up lots of uploads silently,
-- 
_________________________________________________________
Adam Brin
Director of Technology, Digital Antiquity
480.965.1278

Reply via email to