You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Ingimar (Jira)" <ji...@apache.org> on 2019/11/05 16:12:00 UTC

[jira] [Created] (CODEC-265) java.lang.NegativeArraySizeException

Ingimar created CODEC-265:
-----------------------------

             Summary:   java.lang.NegativeArraySizeException
                 Key: CODEC-265
                 URL: https://issues.apache.org/jira/browse/CODEC-265
             Project: Commons Codec
          Issue Type: Bug
    Affects Versions: 1.13
         Environment: Linux = Ubuntu 18.04.3 LTS

JDK = 1.8

 
            Reporter: Ingimar
         Attachments: NewClientEncodePost.java, Util.java, pom.xml

Hi,

trying to encode a file that is 1GB of size.

( linux :
{code:java}
fallocate -l 1GB 1gb.zip{code}
)

I want to post that file to a RESTful-service, package in JSON.

*here is the code* 

 

 
{code:java}
String filePath = "/tmp/1gb.zip";
System.out.println("\t Post to  : ".concat(URL));
 System.out.println("\t file : ".concat(filePath));
Path path = Paths.get(filePath);
 byte[] bArray = Files.readAllBytes(path);
// testing commons codec 1.16 (2019-11-05)
 byte[] encodeBase64 = Base64.encodeBase64(bArray);
final String contentToBeSaved = new String(encodeBase64);
HttpClient client = HttpClientBuilder.create().build();
 HttpResponse response = null;
JSONObject metadata = new JSONObject();
 metadata.put("owner", "Ingo");
 metadata.put("access", "public");
 metadata.put("licenseType", "CC BY");
 metadata.put("fileName", "fileName");
 metadata.put("fileDataBase64", contentToBeSaved);
String metadataFormatted = StringEscapeUtils.unescapeJavaScript(metadata.toString());
StringEntity entity = new StringEntity(metadataFormatted, ContentType.APPLICATION_JSON);
HttpPost post = new HttpPost(URL);
 post.setEntity(entity);
 response = client.execute(post);
 HttpEntity responseEntity = response.getEntity();
String responseFromMediaserver = EntityUtils.toString(responseEntity, "UTF-8");
 System.out.println("\n****");
 System.out.println("Response is : " + responseFromMediaserver);
JSONObject json = new JSONObject(responseFromMediaserver);
 String uuid = json.getString("uuid");
 System.out.println("UUID is " + uuid);
{code}
 

 
 # mvn clean package
 #   java -Xms512m -Xmx20480m -jar target/mediaClient.jar 

The crasch is in

 
{code:java}
byte[] encodeBase64 = Base64.encodeBase64(bArray);{code}
 

the stacktrace is :
{code:java}
 
Starting NewClientEncodePost
 Post to : http://127.0.0.1:8080/MediaServerResteasy/media
 file : /tmp/1gb.zip
Exception in thread "main" java.lang.NegativeArraySizeException
 at org.apache.commons.codec.binary.BaseNCodec.resizeBuffer(BaseNCodec.java:253)
 at org.apache.commons.codec.binary.BaseNCodec.ensureBufferSize(BaseNCodec.java:269)
 at org.apache.commons.codec.binary.Base64.encode(Base64.java:380)
 at org.apache.commons.codec.binary.BaseNCodec.encode(BaseNCodec.java:451)
 at org.apache.commons.codec.binary.BaseNCodec.encode(BaseNCodec.java:430)
 at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:679)
 at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:642)
 at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:623)
 at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:556)
 at se.nrm.bio.mediaserver.testing.base64.NewClientEncodePost.posting(NewClientEncodePost.java:55)
 at se.nrm.bio.mediaserver.testing.base64.NewClientEncodePost.main(NewClientEncodePost.java:38)
 
{code}
 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)